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. 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 (
"github.com/canhlinh/hlsdl"
)
func main() {
hlsDL := hlsdl.New("https://bitdash-a.akamaihd.net/content/sintel/hls/video/10000kbit.m3u8", "download", 10)
if err := hlsDL.Download(); err != nil {
panic(err)
}
}
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