HLS downloader
This is a library to support downloading a m3u8 file. All ts segments will be downloaded into a folder then be joined into a single TS file.
About this project
This project is forked from canhlinh/hlsdl and added some exported function for other program's usage
Exported functions / methods
ParseSegments
function
- Segment
Decrypt
method
- Segment
Download
method
Features:
- Concurrent download segments with multiple http connections
- Decrypt hls encoded segments
- Auto retry download
- Display downloading progress bar
- Record a live stream video
How to integrate this library to your code.
Get the library
go get github.com/liuminhaw/hlsdl
then import it to your code.
import "github.com/liuminhaw/hlsdl"
Sample:
package main
import (
"fmt"
"github.com/liuminhaw/hlsdl"
)
func main() {
hlsDL := hlsdl.New("https://bitdash-a.akamaihd.net/content/sintel/hls/video/1500kbit.m3u8", nil, "download", 64, true, "")
filepath, err := hlsDL.Download()
if err != nil {
panic(err)
}
fmt.Println(filepath)
}
How to build a console application
Build for linux
make build-linux
Build for windows
make build-windows
Run the application
./bin/hlsdl --help
./bin/hlsdl -u https://bitdash-a.akamaihd.net/content/sintel/hls/video/1500kbit.m3u8 -d download -w 10
Record a live stream video
./bin/hlsdl --url "http://cdn1.live-tv.od.ua:8081/bbb/bbbtv-abr/bbb/bbbtv-720p/chunks.m3u8?nimblesessionid=62115268" --record true