This is a library to support downloading a m3u8 file. All TS segments will be downloaded into a folder and then joined into a single TS file. The default file name is video.ts
- Concurrent download segments with multiple http connections
- Decrypt HLS-encoded segments
- Auto-retry download
- Display downloading progress bar
- Record a live stream video
- Allow adding http headers
Get the library
go get github.com/canhlinh/hlsdl
then import it to your code.
import "github.com/canhlinh/hlsdl"
Sample:
package main
import (
"fmt"
"github.com/canhlinh/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)
}
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 "https://cdn1.live-tv.od.ua:8081/bbb/bbbtv-abr/bbb/bbbtv-720p/chunks.m3u8?nimblesessionid=62115268" --record true