【问题标题】:How do I preserve side data when concatenating files in ffmpeg?在 ffmpeg 中连接文件时如何保留辅助数据?
【发布时间】:2020-05-09 18:00:04
【问题描述】:

我尝试在 ffmpeg 中连接多个 360 度视频。它本身的命令非常简单:

ffmpeg -f concat -i 0036_concat.txt -c copy -strict unofficial 36.mp4

其中0036_concat.txt 只是单个文件的列表。我遇到的问题是我无法让 ffmpeg 保留辅助数据。很简单地说,任何源文件上的ffprobe 都包括:

Side data:
  spherical: equirectangular (0.000000/0.000000/0.000000)

而且我一辈子都无法让它传播到输出文件。

this question 有一个适用于单个文件的解决方案,但它在连接多个文件时不起作用。

如果有人知道如何注入,我会很好地注入整个字符串。

【问题讨论】:

  • 您能否提供指向0036_concat.txt 中列出的单个文件之一的链接?
  • @llogan -- 文件内容只是file 'name.mp4'\nfile 'name2.mp4'
  • @llogan——我的错,误读了。这是一个 1 秒的剪辑:dropbox.com/s/qntwf6m85sxvar9/GS020101.mp4?dl=0
  • 看看这是否有帮助? stackoverflow.com/questions/11706049/…
  • @TarunLalwani -- 不幸的是没有。我以前看过那个答案,但不明白为什么它不起作用,我猜这实际上不是 ffmpeg 的“元数据”。附带数据的文档几乎为零

标签: video ffmpeg transcoding 360-video


【解决方案1】:

显然ffmpeg 不支持。很多人建议为 FFmpeg 开发自己的扩展,但我发现它太过分了。

相反,我已经成功完成了,使用 google spatialmedia 将边数据添加到由 FFmpeg 连接产生的输出视频中。就这么简单

python spatialmedia -i 36.mp4  equirectangular.mp4

您可以从其official repo 获取空间媒体。下载the latest release,解压,就可以直接运行上面的命令了。

如果没有,需要先安装python

这就是你所需要的。


下面我用你自己的视频在我的本地添加一个示例。

我下载了你的sample file,并创建了以下文件列表

运行ffprobe GS020101.mp4,我们可以看到Side data: spherical: equirectangular (0.000000/0.000000/0.000000)在那里

运行ffmpeg -f concat -i 0036_concat.txt -c copy -strict unofficial output.mp4

运行ffprobe output.mp4,如你所料,边数据不存在

运行python spatialmedia -i output.mp4 equirectangular.mp4

运行ffprobe equirectangulat.mp4这次可以成功看到预期的边数据

【讨论】:

  • 不幸的是,这实际上并没有回答这个问题。我知道空间媒体注入器,但我不是所有东西都是等角的,所以它不起作用
  • 这是迄今为止我找到的唯一答案,可以让我将拼接不良的 360 度视频上传到 YouTube。谢谢!只需要解决我的拼接问题!
【解决方案2】:

虽然 ffmpeg 似乎不支持这一点,但我发现 ExifTool 似乎可以完成这项工作。在你的 ffmpeg concat 之后运行这个命令:

exiftool -tagsFromFile first_file_inside_concat_file.mp4 -all:all 36.mp4

【讨论】:

    猜你喜欢
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多