Code Monkey home page Code Monkey logo

m3u8-downloader's Introduction

m3u8-downloader

golang 多线程下载直播流m3u8格式的视屏,跨平台。 你只需指定必要的 flag (uonht) 来运行, 工具就会自动帮你解析 M3U8 文件,并将 TS 片段下载下来合并成一个文件。

功能介绍

  1. 下载和解析 M3U8
  2. 下载 TS 失败重试 (加密的同步解密)
  3. 合并 TS 片段

可以下载岛国小电影
可以下载岛国小电影
可以下载岛国小电影
重要的事情说三遍......

效果展示

demo

参数说明:

- u  m3u8下载地址(http(s)://url/xx/xx/index.m3u8)
- o  movieName:自定义文件名(默认为movie)不带后缀 (default "movie")
- n  num:下载线程数(默认24)
- ht hostType:设置getHost的方式(v1: http(s):// + url.Host + filepath.Dir(url.Path); v2: `http(s)://+ u.Host` (default "v1")
- c  cookie:自定义请求cookie (例如:key1=v1; key2=v2)
- r  autoClear:是否自动清除ts文件 (default true)
- s  InsecureSkipVerify:是否允许不安全的请求(默认0)
- sp savePath:文件保存的绝对路径(默认为当前路径,建议默认值)(例如:unix:/Users/xxxx ; windows:C:\Documents)

默认情况只需要传u参数,其他参数保持默认即可。 部分链接可能限制请求频率,可根据实际情况调整 n 参数的值。

下载

已经编译好的平台有: 点击下载

  • windows/amd64
  • linux/amd64
  • darwin/amd64

用法

源码方式

自己编译:go build -o m3u8-downloader
简洁使用:./m3u8-downloader  -u=http://example.com/index.m3u8
完整使用:./m3u8-downloader  -u=http://example.com/index.m3u8 -o=example -n=16 -ht=v1 -c="key1=v1; key2=v2"

二进制方式:

Linux 和 MacOS 和 Windows PowerShell

简洁使用:
./m3u8-linux-amd64 -u=http://example.com/index.m3u8
./m3u8-darwin-amd64 -u=http://example.com/index.m3u8 
.\m3u8-windows-amd64.exe -u=http://example.com/index.m3u8

完整使用:
./m3u8-linux-amd64 -u=http://example.com/index.m3u8 -o=example -n=16 -ht=v1 -c="key1=v1; key2=v2"
./m3u8-darwin-amd64 -u=http://example.com/index.m3u8 -o=example -n=16 -ht=v1 -c="key1=v1; key2=v2"
.\m3u8-windows-amd64.exe -u=http://example.com/index.m3u8 -o=example -n=16 -ht=v1 -c="key1=v1; key2=v2"

问题说明

1.在Linux或者mac平台,如果显示无运行权限,请用chmod 命令进行添加权限

 # Linux amd64平台
 chmod 0755 m3u8-linux-amd64
 # Mac darwin amd64平台
 chmod 0755 m3u8-darwin-amd64

2.下载失败的情况,请设置 -ht="apiv1" 或者 -ht="apiv2" (默认为apiv1)

func get_host(Url string, ht string) string {
    u, err := url.Parse(Url)
    var host string
    checkErr(err)
    switch ht {
    case "v1":
        host = u.Scheme + "://" + u.Host + path.Dir(u.Path)
    case "v2":
        host = u.Scheme + "://" + u.Host
    }
    return host
}

m3u8-downloader's People

Contributors

coosir avatar ilanyu avatar junyi-99 avatar liyuchao-ola avatar llychao avatar reason2010 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

m3u8-downloader's Issues

下载后的文件去哪了?

看起来下好了, 但是合并后的文件去哪里了?m3u8-windows-amd64.exe所在目录下没有,windows视频文件夹下也没有

待下载ts文件数量: 26
2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000006.ts, Retry %!s(int=-1)
[Downloading] ■ 3.85% 00007.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000014.ts, Retry %!s(int=-1)
[Downloading] ■■■ 7.69% 00015.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000009.ts, Retry %!s(int=-1)
[Downloading] ■■■■ 11.54% 00010.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000007.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■ 15.38% 00008.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000015.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■ 19.23% 00016.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000011.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■ 23.08% 00012.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000003.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■ 26.92% 00004.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000000.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■ 30.77% 00001.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000001.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■ 34.62% 00002.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000008.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■ 38.46% 00009.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000002.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■ 42.31% 00003.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000004.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■ 46.15% 00005.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000010.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■ 50.00% 00011.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000013.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■ 53.85% 00014.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000012.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■ 57.69% 00013.ts2021/08/02 20:53:52 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000005.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■ 61.54% 00006.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000016.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■ 65.38% 00017.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000020.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■ 69.23% 00021.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000017.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 73.08% 00018.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000018.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 76.92% 00019.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000025.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 80.77% 00026.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000022.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 84.62% 00023.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000019.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 88.46% 00020.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000021.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 92.31% 00022.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000023.ts, Retry %!s(int=-1)
[Downloading] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 96.15% 00024.ts2021/08/02 20:53:56 m3u8-downloader.go:237: [warn] File :https://a01-g-naver-vod.pstatic.net/blog/a/read/v2/VOD_ALPHA/blog_2021_07_05_1827/hls/bb4eea4e-dd2d-11eb-ba8f-9aead4722fa8-000024.ts, Retry %!s(int=-1)
[Merging] ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■ 100.00% merge.ts
Done! 耗时: 10.15s

下载目录判断路径,代码优化建议

代码里有大量的 Chdir,跳转目录的操作
我建议,可以直接在刚开始就获取绝对路径

  • 没传 -o 就是代码运行的目录
  • 传了 -o 就是这个目录的绝对路径

之后的代码就以绝对路径为准。

2个问题

1 不能下载嵌套的M3U8 ,如
https://mudan.iii-kuyunzy.com/20191215/5702_46b0f018/index.m3u8
使用 curl 查看后

curl https://mudan.iii-kuyunzy.com/20191215/5702_46b0f018/index.m3u8
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000,RESOLUTION=1080x608
1000k/hls/index.m3u8

得到真实地址
https://mudan.iii-kuyunzy.com/20191215/5702_46b0f018/1000k/hls/index.m3u8
可下载

2 不能自定义下载文件名,恳请修改

m3u8文件中换行\r问题

部分m3u8文件中每行是以\r\n结尾,使得getTsList 获取ts的url后面多了 \r 控制符,导致请求失败;
解决办法:

                                ts = TsInfo{
                                        Name: fmt.Sprintf(TS_NAME_TEMPLATE, index),
-                                       Url:  line,
+                                       Url:  strings.Replace(line, "\r", "", -1), // 直接替换掉
                                }

测试的m3u8: https://43.154.3.196/vtt/gc02/changfengdu/19.m3u8

最后,工具不错👍,多协程下载就是快,比ffmpeg要快多了

存在2个bug

  1. getHost的时候应该使用 path.Dir,而不是filepath.Dir, 具体看 go/src/path/filepath/path.go:9 的注释
    //To process paths such as URLs
    // that always use forward slashes regardless of the operating
    // system, see the path package.
  • 在windows下filepath包处理出来的是反斜杠(\) 状态,拼接回去并且url上存在端口时就让url无法被解析, 例子: https://go.dev/play/p/g1q3Db72Yed
  1. getTsList 函数内, Url: fmt.Sprintf("%s/%s", host, line), 获取到的url不对,应该将下载m3u8的url和 m3u8内容里面的行都解析成url, 然后做一个 urlObj.ResolveReference(lineObj).String()
func resolveRefUrl(baseUrl string, extUrl string) (after string, errMsg string) {
	urlObj, err := url.Parse(baseUrl)
	if err != nil {
		return "", err.Error()
	}
	lineObj, err := url.Parse(extUrl)
	if err != nil {
		return "", err.Error()
	}
	return urlObj.ResolveReference(lineObj).String(), ""
}

下载的文件大小为0

 Liu.D.H    Downloads   18.14.2   3.11.2   352ms⠀   m3u8 -u=http://1400085894.vod2.myqcloud.com/3de35aaevodtransgzp1400085894/a394dda25285890794397596634/v.f230.m3u8
[功能]:多线程下载直播流m3u8视屏
[提醒]:下载失败,请使用 -ht=apiv2
[提醒]:下载失败,m3u8 地址可能存在嵌套
[提醒]:进度条中途下载失败,可重复执行
待下载 ts 文件数量: 235
[Merging] ■■■■■■■■■■■■■■■■■■■■ 100.00% 0D:\Downloads\movie.mp4
[Success] 下载保存路径:D:\Downloads\movie.mp4 | 共耗时:   0.19s

 Liu.D.H    Downloads   18.14.2   3.11.2   224ms⠀   m3u8 -u=http://1400085894.vod2.myqcloud.com/3de35aaevodtransgzp1400085894/a394dda25285890794397596634/v.f230.m3u8 -ht=apiv2
[功能]:多线程下载直播流m3u8视屏
[提醒]:下载失败,请使用 -ht=apiv2
[提醒]:下载失败,m3u8 地址可能存在嵌套
[提醒]:进度条中途下载失败,可重复执行
待下载 ts 文件数量: 235
[Merging] ■■■■■■■■■■■■■■■■■■■■ 100.00% 0D:\Downloads\movie.mp4
[Success] 下载保存路径:D:\Downloads\movie.mp4 | 共耗时:   2.13s

 Liu.D.H    Downloads   18.14.2   3.11.2   2.386s⠀  

00007.tspanic: open /dev/null: too many open files

不加ht=apiv2就报错:00007.tspanic: open /dev/null: too many open files
加了ht=apiv2可以合并成mp4,但是不能播放,ffmpeg的结果是: moov atom not found 123.mp4: Invalid data found when processing input
用了apiv2参数以后好像不显示读取到的key,是不是没有使用key导致合并后的mp4不能用呢

运行报错

运行报错了,使用完整命令和精简命令都不行,希望能作者能解决,谢谢了。

unhappy@wyxwyx Downloads % ./m3u8-darwin-amd64 -u=https://upyuncache.gensee.com/gsgetrecord/record51.gensee.net/gsrecord/2932/sbr/2020_09_16/c867a9958f1d4ff2a2a7a2425d8b9214_1600255962/hls/record.m3u8
[功能]:多线程下载直播流m3u8的视屏(ts+合并)
[提醒]:如果下载失败,请使用-ht=apiv2
[提醒]:如果下载失败,m3u8地址可能存在嵌套
[提醒]:如果进度条中途下载失败,可重复执行
待下载ts文件数量: 0
panic: exit status 1

goroutine 1 [running]:
main.ExecUnixShell(0x132ae7c, 0x15)
/Users/chao/go/lyc/tool/m3u8-downloader.go:304 +0x225
main.unix_merge_file(0xc00008e030, 0x25)
/Users/chao/go/lyc/tool/m3u8-downloader.go:334 +0x52
main.Run()
/Users/chao/go/lyc/tool/m3u8-downloader.go:114 +0x496
main.main()
/Users/chao/go/lyc/tool/m3u8-downloader.go:63 +0x20

v2.0存在路径问题

使用版本:mac
错误:所有ts片段下载完成后出现如下报错

panic: exit status 1

goroutine 1 [running]:
main.ExecUnixShell({0x12941bd, 0xc0003eb380})
	/Users/liyuchao/m3u8-downloader/m3u8-downloader.go:319 +0x165
main.unix_merge_file({0xc000128060, 0x9d})
	/Users/liyuchao/m3u8-downloader/m3u8-downloader.go:349 +0x2f
main.Run()
	/Users/liyuchao/m3u8-downloader/m3u8-downloader.go:125 +0x59b
main.main()
	/Users/liyuchao/m3u8-downloader/m3u8-downloader.go:69 +0x17

编译时出现以下问题

 go build  -o ./Releases/m3u8-linux-mipsel m3u8-downloader.go
m3u8-downloader.go:12:2: cannot find module providing package github.com/levigross/grequests: working directory is not part of a module

平台 linux / mipsle
直接在我的路由器中编译的
已经
go get github.com/levigross/grequests

[RT-N56U_B1 /opt/home/admin/m3u8-downloader]# go version
go version go1.15.5 linux/mipsle

ts合并问题

既然只是把ts文件数据进行了合并,并没有格式转换,建议合并后缀改成.ts,别人可以借助其他工具进行类型转换。

小白询问mac文件的安装

你好,我下载了linux版本,但不知道用什么文件打开m3u8-linux-amd64,我需要下载go语言吗?谢谢!

CentOS7下使用报错,无法下载,无论是完整模式还是精简模式

如题,下载报错,
goroutine 1 [running]: main.ExecUnixShell(0x729a23, 0x15) /Users/chao/go/lyc/tool/m3u8-downloader.go:311 +0x225 main.unix_merge_file(0xc000016160, 0x17) /Users/chao/go/lyc/tool/m3u8-downloader.go:341 +0x52 main.Run() /Users/chao/go/lyc/tool/m3u8-downloader.go:121 +0x4ab main.main() /Users/chao/go/lyc/tool/m3u8-downloader.go:64 +0x20

Bug when merging 1080p vs. 720p

Weird bug skipping some portions of the video at merge boundary, try to compare
./m3u8-linux-amd64 -u https://d1lf3486063qdz.cloudfront.net/category-reels/house/house-1080p.m3u8
and
./m3u8-linux-amd64 -u https://d1lf3486063qdz.cloudfront.net/category-reels/house/house-720p.m3u8

there are 2 types of errors produced by mplayer:

[h264 @ 0x7f5aa3e044c0]Invalid NAL unit 6, skipping.
[h264 @ 0x7f5aa3e044c0]error while decoding MB 52 26, bytestream -7
[h264 @ 0x7f5aa3e044c0]concealing 5037 DC, 5037 AC, 5037 MV errors in P frame
[aac @ 0x7f5aa3e044c0]Got unexpected packet after EOF
[aac @ 0x7f5aa3e044c0]invalid band type
[aac @ 0x7f5aa3e044c0]Prediction is not allowed in AAC-LC.

下载后的视频问题以及本地m3u8文件

下载过后的mp4文件使用mac quicktime不能播放,但是其他播放软件可以播放。
另外如果我已经下载好了index.m3u8文件,可以用这个文件下载吗?

感谢作者

提点建议

1.虽然目前可以自定义文件名,但是不支持自定义路径,合并的时候默认也是转换成mp4,建议检测-o参数里面是否包含路径和文件扩展名以达到自定义的目的。
2.上次提了某些需要cookie才能获取到密钥,但是有些是需要伪造请求头的,不止有cookie还有其他的,建议还是把那个-c的参数改成请求头的。

不支持正在直播的流下载

建议下载前查看当前流是否还在直播中, 如果直播中每n秒刷新直播列表加入下载, 直播结束后(列表长时间无更新或列表不返回任何数据时), 再执行ts合并

部分网站的m3u8不能正常下载

大佬, 我发现有的视频网站的m3u8 可以正常下载, 合成MP4文件, 并且播放, 但是有的网站 m3u8链接后会拼接一些token之类的参数,这种好像就不能正常下载,合成MP4文件, 播放 , 大佬能不能支持把 这些需要带token的m3u8 链接也支持一下?

例如, 这个就能下载, 合成mp4, 但是不能播放 :https://jdvodluwytr3t.vod.126.net/jdvodluwytr3t/nos/ept/hls/2020/12/03/1217562411_1844762cdefe4405bb74d57931de2f1e_eshd.m3u8
?ak=7909bff134372bffca53cdc2c17adc27a4c38c6336120510aea1ae1790819de85fe2015eba8d74b6f276bb2bb2926f912a8eeb44624756cfc63c18a2b6bca89bc5aeba2decf31cb8cef1c20b3610578fcac5d885e54c3f7510f586f5cc6825f42f70f2900c21180946a188adc83c947be6fc2ae2e15a00d5fd833ea365cf99f46e5e81e8b89c87b1a1ee7069341eedac&
token=https%3A%2F%2Fvod.study.163.com%2Feds%2Fapi%2Fv1%2Fvod%2Fhls%2Fkey%3Fid%3D1217562411%26token%3Df80a6c6269b1a15397e432967681969300db2ef123973afc777ec9bf4c714f8ef8460f1f1c12bb2b0d15c7891ae11f975452bbc21f00a02939503474d7336a7e49cdc396f6dac640057349ebab0a26e1c389236f602df5199881cdb312fe676a671e1bf5f8aa9769ad15bef447b747e37a42404d535868f94a5b4533c2e69801&
t=1659599603814

WIN系统无法运行

我下载了exe.运行不了呀,直接闪退了。
是不是缺少什么呀,而且管理员也不行。

arm64 报错了

$ ./m3u8-downloader -u=http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8 -ht=apiv2
[功能]:多线程下载直播流 m3u8 视屏(ts + 合并)
[提醒]:如果下载失败,请使用 -ht=apiv2
[提醒]:如果下载失败,m3u8 地址可能存在嵌套
[提醒]:如果进度条中途下载失败,可重复执行
待下载 ts 文件数量: 4
[Downloading] ■■■■■■■■■■■■■■■■■■■■ 100.00% 00002.tspanic: exit status 1

goroutine 1 [running]:
main.execUnixShell({0x2994f3, 0x15})
/home/pi/go/m3u8-downloader-master/m3u8-downloader.go:331 +0x1c4
main.unix_merge_file({0x400012c180, 0x28})
/home/pi/go/m3u8-downloader-master/m3u8-downloader.go:361 +0x48
main.Run()
/home/pi/go/m3u8-downloader-master/m3u8-downloader.go:131 +0x64c
main.main()
/home/pi/go/m3u8-downloader-master/m3u8-downloader.go:71 +0x20

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.