You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MP4转码时如何保留相机厂商MakerNotes元数据

问题:转码H.264到H.265时完整保留松下相机MP4的所有元数据

背景

我用松下DC-TZ202相机录制了一段MP4视频,通过ffprobe original.MP4确认它包含H.264视频流和AAC音频流(详情见文末[1])。我需要把视频转码为H.265,同时完整保留所有元数据,包括厂商专属的自定义元数据。

尝试的FFmpeg命令

我先尝试了这条FFmpeg命令,试图兼顾转码和元数据保留:

ffmpeg -y -i original.MP4  \
  -c:v libx265 -tag:v hvc1 \
  -c:a aac \
  -movflags use_metadata_tags \
  -map_metadata:s:0 0:s:0 \
  -brand mp42  \
  h265.MP4

这条命令的设计目标:

  • 用use_metadata_tags保留自定义(厂商专属)元数据结构
  • 将输入第一个流的元数据映射到输出第一个流
  • 自动映射全局元数据到输出
  • 用brand mp42确保输出为MP4 v2格式(和输入文件一致)

问题:元数据大量丢失

通过以下diff命令对比输入输出的元数据,发现大量元数据没有被保留,包括Exif信息、松下专属传感器数据、XML元数据等:

diff -u <(exiftool -args -g1 original.MP4) <(exiftool -args -g1 h265.MP4)

差异片段(注:第一个减号来自diff -u,第二个减号来自exiftool -args):

[...]--ExifIFD:ColorSpace=sRGB
--ExifIFD:ComponentsConfiguration=Y, Cb, Cr, -
[...] -File:FileType=MP4
 -File:MIMEType=video/mp4
--IFD0:Make=Panasonic
--IFD0:Model=DC-TZ202
--IFD0:ModifyDate=2026:02:01 09:42:59
[...]--IFD1:ThumbnailOffset=8172
--InteropIFD:InteropIndex=R98 - DCF basic file (sRGB)
--InteropIFD:InteropVersion=0100
--Panasonic:AccelerometerX=2
--Panasonic:AccelerometerY=20
[...]--XML:ClipMainClipContentClipMetadataAccessCreationDate=2026:02:01 09:42:59+02:00
--XML:ClipMainClipContentClipMetadataAccessLastUpdateDate=2026:02:01 09:42:59+02:00
--XML:ClipMainClipContentClipMetadataDeviceManufacturer=Panasonic
--XML:ClipMainClipContentClipMetadataDeviceModelName=DC-TZ202
--XML:ClipMainClipContentClipMetadataRating=0
[...]

后续尝试的补救方法

  1. 用ExifTool批量复制标签
    尝试用这条命令复制所有元数据,但仅部分标签被更新,多数厂商专属标签仍缺失:
exiftool -tagsfromfile original.MP4 -all:all -overwrite_original h265.MP4
  1. 手动设置单个标签
    尝试手动写入松下专属标签,但ExifTool提示仅在标签存在时才写入,无法创建新的厂商专属标签块:
exiftool -v3 -Panasonic:AccelerometerX=2 -overwrite_original h265.MP4

命令输出:

Writing Panasonic:AccelerometerX if tag exists
======== h265.MP4
Rewriting h265.MP4...
  FileType = MP4
  FileTypeExtension = MP4
  MIMEType = video/mp4
  Editing tags in: MakerNotes 
  Creating tags in: 
  Rewriting Movie
  Rewriting MovieHeader
    [nothing changed in MovieHeader]
  Rewriting Track
  Rewriting TrackHeader
    [nothing changed in TrackHeader]

核心疑问

容器格式都是MP4,仅视频编码从H.264换成H.265,理论上应该能完整还原所有元数据块。请问如何才能在输出MP4中完整保留输入文件的所有元数据?


[1] 输入文件的ffprobe信息

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'original.MP4':
  Metadata:
    major_brand     : mp42
    minor_version   : 1
    compatible_brands: mp42avc1
    creation_time   : 2026-02-01T09:42:59.000000Z
  Duration: 00:00:02.40, start: 0.000000, bitrate: 19952 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 18952 kb/s, 25 fps, 25 tbr, 90k tbn (default)
    Metadata:
      creation_time   : 2026-02-01T09:42:59.000000Z
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 122 kb/s (default)
    Metadata:
      creation_time   : 2026-02-01T09:42:59.000000Z
      vendor_id       : [0][0][0][0]

内容的提问来源于stack exchange,提问作者akraf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 15:05:08