hlsdl

package module
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 3, 2023 License: GPL-3.0 Imports: 22 Imported by: 0

README

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. Default file name is video.ts

Features:
  • Concurrent download segments with multiple http connections
  • Decrypt hls encoded segments
  • Auto retry download
  • Display downloading progress bar
  • Record a live stream video
Todo:
  • Allow adding http headers
How to integrate this library to your code.

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)
	}
}

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

example

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

Get prebuild here https://github.com/canhlinh/hlsdl/releases *

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DownloadResult

type DownloadResult struct {
	Err   error
	SeqId uint64
}

type DownloadSegmentReport

type DownloadSegmentReport struct {
	Data []byte
	Err  error
}

type HlsDl

type HlsDl struct {
	// contains filtered or unexported fields
}

HlsDl present a HLS downloader

func New

func New(hlsURL string, headers map[string]string, dir string, workers int, enableBar bool, client *http.Client) *HlsDl

func (*HlsDl) Download

func (hlsDl *HlsDl) Download() (string, error)

type Recorder

type Recorder struct {
	// contains filtered or unexported fields
}

func NewRecorder

func NewRecorder(url string, dir string) *Recorder

func (*Recorder) Start

func (r *Recorder) Start() (string, error)

Start starts a record a live streaming

type Segment

type Segment struct {
	*m3u8.MediaSegment
	Path string
}

type SegmentPuller

type SegmentPuller struct {
	Segment *Segment
	Err     error
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL