如何使用ffmpeg批量/顺序下载m3u8文件



我目前正在Mac上使用以下软件单独下载m38u播放列表:

ffmpeg -i <"URL with m3u8"> -codec copy output.ts

如果我想处理多个文件,我目前从单独的终端窗口进行。

我想做的是,在一个例子中,告诉ffmpeg,例如,从.txt文件中获取URL,并按顺序下载它们,每个URL都有一个顺序的输出名称(可以将它们都放在同一个输出文件夹中(。

m3u8文件中的示例代码:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:9
#EXTINF:8.333333,
segment00000.ts
#EXTINF:8.333333,
segment00001.ts
#EXTINF:8.333333,
segment00002.ts
#EXTINF:5.000000,
segment00003.ts
#EXTINF:8.333333,
segment00004.ts
#EXTINF:8.333333,
segment00005.ts

我当然安装了自制软件——我是一个新手,所以不确定这是否意味着我正在积极地"使用"它来管理包

带有m3u8地址列表的文件当前位于/Users/username/Downloads/m38u hold list.txt,如下所示:

https://streaming.imvbox.com/media/2825/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2298/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2822/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2821/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2820/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2088/1280x800/1280x800.m3u8

但到目前为止,这个文件只是一个存储链接的地方——除了复制链接之外,我还没有使用过它。

因此,我将在HOME目录中将以下内容保存为grabAll:

#!/bin/bash
HoldList="/Users/username/Downloads/m38u hold list.txt"
index=0
while read line ; do
echo ffmpeg -i $line -codec copy output-${index}.ts
((index=index+1))
done < "$HoldList"

注意:如果使用TextEdit,请确保单击菜单选项Format->Make Plain Text

然后你可以启动终端并运行:

bash grabAll

看看它是否正在生成您想要的命令类型。它目前什么都不做,只是在屏幕上说它会做什么。如果它看起来不错,你只需要从第三行到最后一行删除单词echo,然后再次运行它。

样本输出

ffmpeg -i https://streaming.imvbox.com/media/2825/1280x800/1280x800.m3u8 -codec copy output-0.ts
ffmpeg -i https://streaming.imvbox.com/media/2298/1280x800/1280x800.m3u8 -codec copy output-1.ts
ffmpeg -i https://streaming.imvbox.com/media/2822/1280x800/1280x800.m3u8 -codec copy output-2.ts
ffmpeg -i https://streaming.imvbox.com/media/2821/1280x800/1280x800.m3u8 -codec copy output-3.ts
ffmpeg -i https://streaming.imvbox.com/media/2820/1280x800/1280x800.m3u8 -codec copy output-4.ts
ffmpeg -i https://streaming.imvbox.com/media/2088/1280x800/1280x800.m3u8 -codec copy output-5.ts

最新更新