gpt4 book ai didi

php - FFmpeg 可以连接来自不同域的文件吗?

转载 作者:行者123 更新时间:2023-12-04 23:21:05 26 4
gpt4 key购买 nike

我正在尝试将各种 .ts 视频剪辑连接成一个视频,然后将视频转换为 .mp4 文件。我知道我可以制作一个格式如下的 .txt 文件:

file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

然后像这样连接它们:
ffmpeg -f concat -i mylist.txt -c copy all.ts

然后像这样转换文件:
ffmpeg -i all.ts -acodec copy -vcodec copy all.mp4

我的问题是,我的 .txt 文件可以是来自另一个域的网址吗?例如。:
http://somewebsite.com/files/videoclip1.ts
http://somewebsite.com/files/videoclip2.ts
http://somewebsite.com/files/videoclip3.ts

或者,我是否必须首先下载所有这些剪辑,将它们本地存储在我的域中,然后制作一个指向它们的 .txt 文件?我正在使用 PHP。谢谢。

最佳答案

是的,这是可能的。请注意,在以下示例中,我使用了您问题中的 url 和文件名,在测试时,我在自己的 Web 服务器上使用了一些测试文件。

使用您提供的示例文本文件尝试此操作将给出非常清晰的错误消息:

[concat @ 0x7f892f800000] Line 1: unknown keyword 'http://somewebsite.com/files/videoclip1.ts

mylist.txt: Invalid data found when processing input



这很容易通过在 mylist.txt 中重新引入 'file' 关键字来解决。 :
file 'http://somewebsite.com/files/videoclip1.ts'
file 'http://somewebsite.com/files/videoclip2.ts'
file 'http://somewebsite.com/files/videoclip3.ts'

该更新的文件将给出不同的错误消息:

[concat @ 0x7fa467800000] Unsafe file name 'http://somewebsite.com/files/videoclip1.ts'

mylist.txt: Operation not permitted



原因是 ffmpeg 默认不允许 http-urls。这可以通过包含 -safe 0 来绕过。 ffmpeg 调用中的参数 之前 -i争论:
ffmpeg -f concat -safe 0 -i mylist.txt -c copy all.ts

这可能在您的安装中开箱即用,在我的这给出了另一个错误消息:

[http @ 0x7faa68507940] Protocol 'http' not on whitelist 'file,crypto'!

[concat @ 0x7faa69001200] Impossible to open 'http://somewebsite.com/files/videoclip1.ts'

mylist.txt: Invalid argument



这是因为,在我的安装中,ffmpeg 的默认协议(protocol)白名单只包含 filecrypto .允许 http同样,我们需要在命令中明确提供允许的协议(protocol)白名单。事实证明, tcp还需要:
ffmpeg -f concat -safe 0 -protocol_whitelist file,http,tcp -i mylist.txt -c copy all.ts

这允许我的安装下载和连接视频文件。

关于php - FFmpeg 可以连接来自不同域的文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66048898/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com