AVMutableMetadataItem的时间和时间持续时间读数后无效

时间:2014-01-14 08:52:41

标签: ios iphone ipad

我有一个问题。 最近我需要为录制的视频添加自定义标签。设备上的本地视频不是流式视频。任务是在视频中添加一些特定于事件的标签,其位置可以通过向前/向后按下任何播放器中的按钮来设置。

电影文件是mov文件还是mp4格式并不重要。 我在论坛上搜索,发现几个示例如何使用AVExportSession&添加元数据。有效。 虽然,当我尝试使用AVAssetWriter添加元数据时。我无法将属性附加到视频中。

我不明白的是,添加属性后,返回(时间和持续时间)属性始终无效。

例如,假设我有一段持续时间为2秒的视频。 我尝试过不同的密钥空间。我无法从ID3空间写出密钥。

IS ID3用于流视频? (据我所知,.mp3的ID3元数据)。因此,我无法将其写入MPEG-4文件

我还使用了QuickTimeUserData& ISOUserData但结果再次相同。 这是一个例子

AVMutableMetadataItem *item2 = [AVMutableMetadataItem new];
item2.keySpace = AVMetadataKeySpaceiTunes;
item2.key = AVMetadataiTunesMetadataKeyUserComment;
item2.value = @"One two three";
item2.duration =CMTimeMakeWithSeconds(1, 1);
item2.time = CMTimeMakeWithSeconds(0, 1);

阅读后我得到以下内容:

AVMutableMetadataItem: 0xa4301f0, keySpace=itsk, key=\U00a9cmt, commonKey=(null), locale=  (null), value=One two three, time={INVALID}, duration={INVALID}, extras={\n    dataType = 1;\n}

我想用时间&元数据的持续时间属性,而不是编写自定义数据并在此之后处理它。

理想情况下,使用time = t1,duration = d1,....(tn,dn)附加项目数组会很棒。

有谁知道如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

我最终找到了一个解决方案,将章节添加到视频文件而不是使用元数据。

我查看了可用的库,获取了mpv4lib

目前没有为iOS编译库,因此,我将源项目移植到iOS平台的静态库中。

该库允许将自定义“atoms”添加到mp4文件,其中一个是Quick Time文本轨道,包含章节。 我跟post

类似

图书馆位于here