【问题标题】:Write Live Photo metadata to video using FFMPEG使用 FFMPEG 将 Live Photo 元数据写入视频
【发布时间】:2020-12-20 03:03:50
【问题描述】:

根据Apple Live Photo file format,需要编写三段元数据才能使 JPEG 和 MOV 被接受为实时照片。我可以使用 exiftool 和 ffmpeg 编写必要的内容标识符元数据。

对于 JPEG:

exiftool -TagsFromFile reference.jpeg -makernotes -ContentIdentifier image.jpeg
exiftool -ContentIdentifier="$id" image.jpeg

同样,ffmpeg 可用于编写具有匹配 id 的顶级 Quicktime 元数据。

但是我在使用定时元数据时遇到了问题:["com.apple.quicktime.still-image-time" : 0xFF]

我什至无法使用保留必要的定时元数据的 ffmpeg 生成现有实时照片 MOV 文件的副本。

ffmpeg -i original.mov -map 0 -c copy -movflags use_metadata_tags copy.mov

复制全局元数据(即 com.apple.quicktime.content.identifier),但丢失了可以使用 exiftool 确认的必要静止图像时间:

> exiftool -G -U -ee original.mov | grep 'Still Image Time'
[QuickTime]     Still Image Time                : -1
> exiftool -G -U -ee copy.mov | grep 'Still Image Time'
> 

如何使用 ffmpeg 编写定时元数据 - 特别是静止图像时间数据?

编辑:看起来这可能是因为 ffmpeg 不知道如何处理数据流上的 mebx 标签:

[mov @ 0x7fb232091400] Unknown hldr_type for mebx, writing dummy values

而且 ffmpeg 似乎没有办法复制未知流。这似乎也是处理 GoPro 元数据流中的 fdsc 标签的问题(例如,参见 https://gist.github.com/radimklaska/8974637522a751adb49db0de3be482c9#file-gopro_hevc_to_dnxhd-sh-L125),因此它经常被复制为 gpmd 数据,以确保它不会被虚拟值覆盖,但这个技巧不适用于实时照片mebx 元数据。

【问题讨论】:

    标签: ffmpeg metadata apple-live-photos


    【解决方案1】:

    我有同样的问题,我认为使用bento4 工具应该是可能的。我以前用它来复制同样存储在这个结构中的 GPS 元数据,它应该也可以在这种情况下工作,但是我对它的了解还不够,无法让它工作。

    mebx 数据似乎存储在moov/trak/mdia/minf/stbl/stsd 中,但是我无法正确移植。

    例如这不起作用并创建一个大的损坏文件:

    # Get atom from original file
    mp4extract moov/trak IMG_1337.MOV trak.atom
    
    # insert into converted file
    mp4edit --insert moov:trak.atom IMG_1337-converted.MOV IMG_1337-converted-metadata.MOV
    

    希望有人能以此为基础。

    【讨论】:

      猜你喜欢
      • 2016-01-02
      • 2021-03-10
      • 2015-07-10
      • 2015-10-28
      • 2014-12-27
      • 2019-08-25
      • 2017-07-12
      • 2014-05-13
      • 1970-01-01
      相关资源
      最近更新 更多