从youtube下载和连接部分视频

时间:2017-05-29 23:21:55

标签: ffmpeg youtube youtube-dl video-editing

我正在尝试创建一个视频测验,其中包含其他视频的一小部分,连接在一起(目的是,人们会识别这些短片的拍摄地点)。

为此,我创建了一个文件,其中包含视频的URL," snip"的开始时间及其长度。例如:

https://www.youtube.com/watch?v=5-j6LLkpQYY   00:00   01:00
https://www.youtube.com/watch?v=b-DqO_D1g1g   14:44   01:20
https://www.youtube.com/watch?v=DPAgWKseVhg   12:53   01:00

意思是第一部分应该从第一个URL开始和最后一分钟拍摄视频,第二部分应该从第二个URL开始,从14:44(分钟:秒)开始,最后一分钟, 20秒等等。

然后,所有这些部分应该连接成一个视频。

我正在尝试编写一个脚本(我使用ubuntu并且能够流利使用几种脚本语言),并尝试使用youtube-dl命令行包和ffmpeg,但我找不到正确的选择,以实现我的需要。

任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

考虑视频列表在foo.txt中,而输出视频为foo.mp4,此 bash 脚本应能完成此任务:

eval $(cat foo.txt | while read u s d; do echo "cat <(youtube-dl -q -o - $u | ffmpeg -v error -hide_banner -i - -ss 00:$s -t 00:$d -c copy -f mpegts -);"; done | tee /dev/tty) | ffmpeg -i - -c copy foo.mp4

这是对process substitutioneval使用一些技巧来避免中间文件,容器mpegts可以使简单的concat protocoltee /dev/tty用于调试

我已经用youtube-dl 2018.09.26-1ffmpeg 1:4.0.2-3进行了测试。