包括FFMPEG中的Youtube-dl在Bash(OSX)中不起作用



我正在尝试下载 5 秒样本以获取 youtube 视频列表。传统的方法是使用"youtube-dl"下载整个文件,然后使用"ffmpeg"根据需要拆分它。

我正在尝试使用以下方法:https://github.com/ytdl-org/youtube-dl/issues/622#issuecomment-162337869

当我在命令中包含变量时,它确实有效,例如:

ffmpeg -ss 0 -i $(youtube-dl -f best --get-url https://www.youtube.com/watch?v=ySVi-0RS5vI&t=5s) -t 10 -c:v copy -c:a copy title2.mp4

但是,我在尝试自动化系统时遇到问题。具体来说,我希望 ffmpeg 和 youtube-dl 读取文件并使用这些值。我创建了文件"youtube.txt",其中包含以下代码:

440.8,https://www.youtube.com/watch?v=0-4wOE_DNeA,661.2,881.6,0-4wOE_DNeA
330,https://www.youtube.com/watch?v=0-AMWW6tHzw,495,660,0-AMWW6tHzw
509.2,https://www.youtube.com/watch?v=0-Rmto2rgMw,763.8,1018.4,0-Rmto2rgMw
427.6,https://www.youtube.com/watch?v=0-U53qm45cA,641.4,855.2,0-U53qm45cA
320.4,https://www.youtube.com/watch?v=0-dja9Ys4Sg,480.6,640.8,0-dja9Ys4Sg
343.6,https://www.youtube.com/watch?v=0-g_PulsqtM,515.4,687.2,0-g_PulsqtM
415.6,https://www.youtube.com/watch?v=0-nniRyn7dU,623.4,831.2,0-nniRyn7dU
431.2,https://www.youtube.com/watch?v=006BQU3BFxw,646.8,862.4,006BQU3BFxw

我正在使用以下命令:

parallel -j 6 --colsep ',' ffmpeg -ss {1} -i $(youtube-dl -f best --get-url {2}) --t 5 -c:v copy -c:a copy {5} :::: youtube.txt

但是,我收到以下错误:

ERROR: '{2}' is not a valid URL. Set --default-search "ytsearch" (or run  youtube-dl "ytsearch:{2}" ) to search YouTube
--t: No such file or directory

你介意帮我吗?

谢谢!

这是一个使用 python2 的解决方案,所以这应该适用于 MacOS 附带的 python 版本。由于某种原因,我最初的 bash 脚本在 csv 行阅读中窒息。将此脚本添加到与youtube.txt相同的目录中getvids.py,然后运行chmod +x getvids.py,并在准备好将其松散时./getvids.py

#!/usr/bin/python
import csv, os
with open('youtube.txt') as csv_file:
    csv_reader = csv.reader(csv_file, delimiter=',')
    for row in csv_reader:
            starttimes = [row[0], row[2], row[3]]
            yturl = os.popen('youtube-dl -f best --get-url '+row[1]).read().strip()
            for thistime in starttimes:
                    print(row[1] + ' @time='+thistime)
                    os.system('ffmpeg -hide_banner -loglevel panic -ss '
                        +thistime+' -i "'+yturl+'" -t 5 -c copy '+row[4]+'['+thistime+'s].mp4')

最新更新