Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在FFMPEG中包含Youtube dl在Bash(OSX)中不起作用_Bash_Macos_Ffmpeg_Youtube Dl - Fatal编程技术网

在FFMPEG中包含Youtube dl在Bash(OSX)中不起作用

在FFMPEG中包含Youtube dl在Bash(OSX)中不起作用,bash,macos,ffmpeg,youtube-dl,Bash,Macos,Ffmpeg,Youtube Dl,我正在尝试下载youtube视频列表的5秒示例。传统的方法是使用“youtube dl”下载整个文件,然后使用“ffmpeg”根据需要对其进行拆分 我尝试使用以下方法: 当我在命令中包含变量时,它确实起作用,例如: 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 但是,

我正在尝试下载youtube视频列表的5秒示例。传统的方法是使用“youtube dl”下载整个文件,然后使用“ffmpeg”根据需要对其进行拆分

我尝试使用以下方法:

当我在命令中包含变量时,它确实起作用,例如:

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')

这里有一个使用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')

如果可以的话,我正在为你编写一个bash脚本。您的csv文件中的第三个和第四个参数是什么?噢,哇,非常感谢!实际上,我正试图在三个时间点提取5秒的视频:1、2和4#5代表文件名。我猜你的意思是#1,3,4?我已经写好了,如果在我发布之前没有其他人知道的话。。。但是刚从洛杉矶起飞。我明天早上给你。好的,谢谢,请让我知道。如果可行的话,我正在为你编写一个bash脚本。您的csv文件中的第三个和第四个参数是什么?噢,哇,非常感谢!实际上,我正试图在三个时间点提取5秒的视频:1、2和4#5代表文件名。我猜你的意思是#1,3,4?我已经写好了,如果在我发布之前没有其他人知道的话。。。但是刚从洛杉矶起飞。我明天早上给你送来。好的,谢谢,请告诉我。