【问题标题】:Can FFmpeg concatenate files from a different domain?FFmpeg 可以连接来自不同域的文件吗?
【发布时间】:2021-05-08 22:43:08
【问题描述】:

我正在尝试将各种 .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。谢谢。

【问题讨论】:

  • 肯定会尝试看看会发生什么比将所有这些都输入到 SO 问题中花费的时间更少?
  • @rickdenhaan 嗯,我确实尝试过,但它不起作用。但是,我不确定它是否不起作用,因为文件在另一个域上,或者因为我的代码有其他问题。在我花接下来的几个小时编写代码以下载所有文件等之前,我想知道是否可以合并来自另一个域的文件。
  • 分享您尝试的完整日志。

标签: php ffmpeg


【解决方案1】:

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

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

[concat@0x7f892f800000] 第1行:未知关键字'http://somewebsite.com/files/videoclip1.ts

mylist.txt:处理输入时发现无效数据

这很容易通过在mylist.txt 中重新引入“文件”关键字来解决:

file 'http://somewebsite.com/files/videoclip1.ts'
file 'http://somewebsite.com/files/videoclip2.ts'
file 'http://somewebsite.com/files/videoclip3.ts'

更新后的文件会给出不同的错误信息:

[concat@0x7fa467800000] 不安全的文件名'http://somewebsite.com/files/videoclip1.ts'

mylist.txt:不允许操作

原因是ffmpeg默认不允许http-urls。这可以通过在您的 ffmpeg 调用 before -i 参数中包含 -safe 0 参数来绕过:

ffmpeg -f concat -safe 0 -i mylist.txt -c copy all.ts

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

[http @ 0x7faa68507940] 协议 'http' 不在白名单 'file,crypto' 上!

[concat @ 0x7faa69001200] 无法打开'http://somewebsite.com/files/videoclip1.ts'

mylist.txt:参数无效

这是因为,在我的安装中,ffmpeg 的默认协议白名单只包含filecrypto。为了也允许http 协议,我们需要在命令中明确提供允许的协议白名单。事实证明,tcp 也是必需的:

ffmpeg -f concat -safe 0 -protocol_whitelist file,http,tcp -i mylist.txt -c copy all.ts

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

【讨论】:

  • 我在共享服务器上使用 PHP,所以我需要使用 shell_exec()。最终起作用的是 shell_exec("$ffmpeg -f concat -safe 0 -i $fileList -c copy $combinedFile");感谢您的帮助。
猜你喜欢
  • 2012-07-22
  • 2023-03-28
  • 1970-01-01
  • 2013-02-28
  • 2018-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多