【问题标题】:how to extract a metadata track from MP4 file如何从 MP4 文件中提取元数据轨道
【发布时间】:2016-03-03 02:39:10
【问题描述】:

我需要从 MP4 文件中提取元数据轨道并另存为单独的文件。我看到,使用 ffmpeg 我可以提取标准轨道,如音频或视频或字幕轨道,并将其保存为新文件。例如:要保存音轨,我使用以下命令:

ffmpeg -i input-video.avi -vn -acodec copy output-audio.aac

但我需要保存一个专有的元数据轨道。任何指针都会有所帮助。

这是ffmpeg 的输出,以了解文件中存在的不同trak。特别是,我有兴趣提取对应于 Stream #0:3(eng)...

的轨道
C:\Users\rkumar\Documents\work\tools\ffmpeg\bin>ffmpeg.exe -i input.MP4
ffmpeg version N-57176-g64b3aaf Copyright (c) 2000-2013 the FFmpeg developers
built on Oct 15 2013 21:32:52 with gcc 4.8.1 (GCC)

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.MP4':
Metadata:
major_brand     : mp41
minor_version   : 538120216
compatible_brands: mp41
creation_time   : 1970-01-01 00:00:09
Duration: 00:00:10.52, start: 0.000000, bitrate: 834 kb/s

Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuvj420p(pc, bt709), 
854x480 [SAR 1:1 DAR 427:240], 679 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc (default)
Metadata:
creation_time   : 1970-01-01 00:00:09
handler_name    : AVC
timecode        : 00:00:13:22

Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time   : 1970-01-01 00:00:09
handler_name    : AAC
timecode        : 00:00:13:22

Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
Metadata:
creation_time   : 1970-01-01 00:00:09
handler_name    : TCD
timecode        : 00:00:13:22

Stream #0:3(eng): Data: none (ssmd / 0x646D7067), 5 kb/s (default)
Metadata:
creation_time   : 1970-01-01 00:00:09
handler_name    : MET

Stream #0:4(eng): Data: none (fdsc / 0x63736466), 10 kb/s (default)
Metadata:
creation_time   : 1970-01-01 00:00:09
handler_name    : SOS

【问题讨论】:

  • 这里是 ffmpeg 的输出
  • ffmpeg 输出很长。所以只输入输出中的相关信息。流 #0:0(eng):视频:h264(主)(avc1 / 0x31637661),yuvj420p(pc,bt709),854x480 [SAR 1:1 DAR 427:240],679 kb/s,29.97 fps,29.97 tbr , 90k tbn, 59.94 tbc (默认) 元数据: handler_name : AVC Stream #0:1(eng): 音频: aac (mp4a / 0x6134706D), 48000 Hz, 立体声, fltp, 12 8 kb/s (默认) 元数据: handler_name : AAC Stream #0:3(eng): 数据: none (ssmd / 0x646D7067), 5 kb/s (default) Metadata: handler_name : MET
  • 这不是完整的输出。您应该提供完整的输出并将其添加到您的问题中,而不是试图将其塞进评论中。
  • 我用 ffmpeg 输出更新了我的原始任务
  • 您想提取元数据还是只提取给定轨道上的数据?使用ffprobe -i input,您可以将其转储到一个文件中,然后通过解析输出从中提取元数据。这就是我使用 ffmpeg 提取元数据的方法。

标签: ffmpeg mp4 vlc


【解决方案1】:

您可以使用ffmpeg提取元数据轨道:

ffmpeg -i input-video.avi -map 0:1 -c copy -copy_unknown -f data data.bin

这会将元数据保存在data.bin 中,这是一个二进制文件,因此需要进行一些额外的处理才能将数据取出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-16
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多