ffmpeg:从视频容器中提取未知数据流

Pik*_*ack 6 ffmpeg

我有一个 .MOV 容器,其中包含以下曲目:

Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], 100619 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
Metadata:
  creation_time   : 2020-07-21T22:48:24.000000Z
  handler_name    : DJI.AVC
  encoder         : AVC encoder
Stream #0:1(eng): Data: none (priv / 0x76697270), 87 kb/s
Metadata:
  creation_time   : 2020-07-21T22:48:24.000000Z
  handler_name    : DJI.Meta
Stream #0:2(eng): Subtitle: mov_text (text / 0x74786574), 2 kb/s (default)
Metadata:
  creation_time   : 2020-07-21T22:48:24.000000Z
  handler_name    : DJI.Subtitle
Run Code Online (Sandbox Code Playgroud)

如您所见,流 #0:1(称为 DJI.meta)的数据格式未知。我只想将该流的原始数据提取到文件中。这就是我尝试过的 ffmpeg 命令:

ffmpeg -i .\DJI_0001.MOV -map 0:1 metadata
Run Code Online (Sandbox Code Playgroud)

但使用此命令会导致以下错误:

Unable to find a suitable output format for 'metadata'
metadata: Invalid argument
Run Code Online (Sandbox Code Playgroud)

我如何告诉 ffmpeg 不应格式化数据,以便仅提取原始数据?

Gya*_*yan 11

使用

ffmpeg -i input -map 0:d -c copy -copy_unknown -f data raw.bin
Run Code Online (Sandbox Code Playgroud)

  • 该命令执行以下操作:仅映射数据流,将编解码器设置为复制,以便不进行转换,设置 copy_unknown 因为没有可识别的解码器,并且 ffmpeg 可能会在该帐户上失败复制。设置数据复用器,以便不会将其他数据添加到复制的流数据包中。 (4认同)