在 ffmpeg 中连接文件时如何保留辅助数据?

8 video ffmpeg transcoding 360-video

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

ffmpeg -f concat -i 0036_concat.txt -c copy -strict unofficial 36.mp4
Run Code Online (Sandbox Code Playgroud)

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

Side data:
  spherical: equirectangular (0.000000/0.000000/0.000000)
Run Code Online (Sandbox Code Playgroud)

而且我一生都无法将其传播到输出文件。

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

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

Car*_*les 5

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

相反,我已经成功地使用google spatialmedia将辅助数据添加到 FFmpeg 连接产生的输出视频中来完成此操作。这很简单

python spatialmedia -i 36.mp4  equirectangular.mp4
Run Code Online (Sandbox Code Playgroud)

您可以从其官方存储库获取spatialmedia 。下载最新版本,解压后就可以直接运行上面的命令了。

如果没有,则需要先安装python

这就是你所需要的。


下面我在本地添加了一个带有您自己的视频的示例。

我下载了您的示例文件,并创建了以下文件列表

在此输入图像描述

运行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这时候就可以成功看到预期的端数据了

在此输入图像描述