如何从 MP4 文件中提取元数据轨道
Posted
技术标签:
【中文标题】如何从 MP4 文件中提取元数据轨道【英文标题】:how to extract a metadata track from MP4 file 【发布时间】: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 提取元数据的方法。
【参考方案1】:
您可以使用ffmpeg
提取元数据轨道:
ffmpeg -i input-video.avi -map 0:1 -c copy -copy_unknown -f data data.bin
这会将元数据保存在data.bin
中,这是一个二进制文件,因此需要进行一些额外的处理才能将数据取出。
【讨论】:
以上是关于如何从 MP4 文件中提取元数据轨道的主要内容,如果未能解决你的问题,请参考以下文章