使用 ffmpeg 复制 GoPro 元数据 - 找不到编解码器的标签无

Posted

技术标签:

【中文标题】使用 ffmpeg 复制 GoPro 元数据 - 找不到编解码器的标签无【英文标题】:Copying GoPro metadata with ffmpeg - Could not find tag for codec none 【发布时间】:2021-05-17 20:48:20 【问题描述】:

我正在尝试使用 ffmpeg 复制 gopro 文件的元数据。 该问题的最基本演示是将所有内容复制到一个新文件中:

ffmpeg -y -i source.MP4 -c copy -copy_unknown -map 0:v -map 0:a -map 0:2 -map 0:3 -map 0:4 -map_metadata 0 result.MP4

这会产生错误:

Could not find tag for codec none in stream #2, codec not currently supported in container
Could not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Error initializing output stream 0:4 --

据我了解,这意味着 ffmpeg 没有正确应用 -c 复制操作,而是抱怨没有数据流的编码器。同样的错误发生在 0:2 和 0:4

在谷歌上搜索时,如果发现一些人过去遇到过同样的问题,但我也发现了一些关于它有效的报告。

任何想法我做错了什么或者这实际上是一个错误?

这里是 ffprobe 和 GoPro file 的链接。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'source.MP4':
  Metadata:
    major_brand     : mp41
    minor_version   : 538120216
    compatible_brands: mp41
    creation_time   : 2021-05-17T22:36:48.000000Z
    firmware        : HD7.01.01.90.00
  Duration: 00:00:02.88, start: 0.000000, bitrate: 58664 kb/s
  Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuvj420p(pc, bt709), 2704x1520 [SAR 1:1 DAR 169:95], 58557 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 59.94 tbc (default)
    Metadata:
      creation_time   : 2021-05-17T22:36:48.000000Z
      handler_name    : GoPro H.265
      vendor_id       : [0][0][0][0]
      encoder         : GoPro H.265 encoder
      timecode        : 02:43:36:15
  Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 187 kb/s (default)
    Metadata:
      creation_time   : 2021-05-17T22:36:48.000000Z
      handler_name    : GoPro AAC
      vendor_id       : [0][0][0][0]
      timecode        : 02:43:36:15
  Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
    Metadata:
      creation_time   : 2021-05-17T22:36:48.000000Z
      handler_name    : GoPro TCD
      timecode        : 02:43:36:15
  Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 30 kb/s (default)
    Metadata:
      creation_time   : 2021-05-17T22:36:48.000000Z
      handler_name    : GoPro MET
  Stream #0:4(eng): Data: none (fdsc / 0x63736466), 16 kb/s (default)
    Metadata:
      creation_time   : 2021-05-17T22:36:48.000000Z
      handler_name    : GoPro SOS
Unsupported codec with id 0 for input stream 2
Unsupported codec with id 100359 for input stream 3
Unsupported codec with id 0 for input stream 4

【问题讨论】:

您找到解决方案了吗? 并非如此。我现在正在解析原始视频文件并寻找元数据标签。这不是一个很好的解决方案,如果我花时间学习 mp4 可能会更好,但它运行得很好。它还不是 100% 完美(无效值存在一些问题),但您可以查看 my Github 【参考方案1】:

您可以尝试更换容器,但我不知道您是否可以接受

ffmpeg -y -i source.MP4 -c copy -copy_unknown -map 0:v -map 0:a -map 0:2 -map 0:3 -map 0:4 -map_metadata 0 result.mov

【讨论】:

感谢您的建议,不幸的是,这不是一个选项。我正在尝试提取 gopro 7 陀螺元数据,对其进行平滑处理并重新创建文件。通常来自 hero 7 的数据过于嘈杂,无法使用 reelsteady 进行稳定,但我希望过滤它可以使其可用。不过,Reelsteady 只需要 MP4。

以上是关于使用 ffmpeg 复制 GoPro 元数据 - 找不到编解码器的标签无的主要内容,如果未能解决你的问题,请参考以下文章

使用 FFmpeg 检索和保存媒体元数据

如何使用 ffmpeg 删除所有元数据?

使用 ffmpeg 按大小分割视频文件 [关闭]

使用 FFMPEG 修改编码器元数据的问题

FFMPEG 附加文件作为元数据

ffmpeg文档23-元数据(metadata)