使用 mp4 时出现“标签 gpmd 与输出编解码器 ID 0 不兼容”

使用 mp4 时出现“标签 gpmd 与输出编解码器 ID 0 不兼容”

我正在尝试修改 mp4 文件中的 GoPro 元数据 (gpmd)。为此,我将元数据流提取为 bin,对其进行修改,然后使用原始视频/音频流和修改后的元数据流创建一个新的 mp4。

问题是我收到此错误消息:标签 gpmd 与输出编解码器 id“0”([0][0][0][0])不兼容

ffmpeg/ffmpeg -i samples/hero5.mp4 -f data -i ./gpmd.bin -c:v copy -c:a copy -c:s:3 bin_data -map 0:0 -map 0:1 -map 0:2 -map 1:0 -tag:3 gpmd -tag:v avc1 -tag:a mp4a -map_metadata 0:g -map_metadata:s:a 0:s:a -map_metadata:s:v 0:s:v -map_metadata:s:2 0:s:2 -map_metadata:s:3 0:s:3 test.mp4

如果使用 .mov 扩展名作为输出文件,该命令有效。问题是我需要 mp4 扩展名。gpmd 标签与 mp4 容器不兼容是否有特定原因?

答案1

这是从非 MOV/MP4 源读取 gpmd 的限制。

目前的解决方法是先将其多路复用到 MOV,然后将其用作最终多路复用的源。

所以,

ffmpeg -f data -i ./gpmd.bin -c copy -map 0 -tag:0 gpmd temp.mov

进而,

ffmpeg -i samples/hero5.mp4 -i temp.mov -c:v copy -c:a copy -map 0:0 -map 0:1 -map 0:2 -map 1:0 -tag:v avc1 -tag:a mp4a -map_metadata 0:g -map_metadata:s:a 0:s:a -map_metadata:s:v 0:s:v -map_metadata:s:2 0:s:2 -map_metadata:s:3 0:s:3 test.mp4

相关内容