FFmpeg:直接从文本文件读取输入链接(无需额外的工具和管道)

FFmpeg:直接从文本文件读取输入链接(无需额外的工具和管道)

有一个文本文件 - link.txt。该文件包含以下视频链接:

$ cat link.txt
https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4

我可以用以下方式对该文件的视频进行转码:

ffmpeg -i $(cat link.txt) -vcodec libx264 -acodec libfdk_aac out.mpg

或者我可以使用管道来达到相同的结果:

cat link.txt | ffmpeg -i - -vcodec libx264 -acodec libfdk_aac out.mpg

但是我必须通过特定软件运行 FFmpeg,并且它不支持上述管道和命令。

我正在寻找一个像这样运行 FFmpeg 的解决方案:

ffmpeg -some-extra-parameters -to-say-ffmpeg -get-the-link \
       -from-the-text-file -i link.txt -vcodec libx264 \
       -acodec libfdk_aac out.mpg

问题 1:这个功能在 FFmpeg 中实现了吗?

另外,我检查了FFmpeg 预设 并根据我的目标创建了 FFPRESET 文件:

$ cat /usr/local/share/ffmpeg/linkpreset.ffpreset
i=https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4
vcodec=libx264
acodec=libfdk_aac

当我尝试使用该预设执行 FFmpeg 时出现错误:

$ ffmpeg -fpre /usr/local/share/ffmpeg/linkpreset.ffpreset out.mpg

/usr/local/share/ffmpeg/linkpreset.ffpreset: Invalid option or argument: 
'i=https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4', 
parsed as 'i' = 'https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4'

问题2:有没有办法在 FFPRESET 文件中指定输入链接?
问题 3(主要问题):如何直接从 FFmpeg 中的文本文件读取输入链接(无需额外的工具和管道)?

答案1

没有直接的方法可以做到这一点,但一种解决方法是使用带有单个条目的 concat 解复用器。

创建包含以下内容的文本文件

file 'https://www.quirksmode.org/html5/videos/big_buck_bunny.mp4'

然后运行

ffmpeg -f concat -safe 0 -protocol_whitelist file,https,tcp,tls,crypto -i link.txt ...

相关内容