我正在尝试下载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
您介意帮助我吗?
谢谢!
答案 0 :(得分:0)
这是一个使用python2的解决方案,因此这应该适用于MacOS随附的python版本。我的原始bash脚本由于某种原因在csv行读取中令人窒息。将此脚本添加到getvids.py
所在的目录中的youtube.txt
上,然后运行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')