2014-01-14 44 views
0

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

电影文件是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} 

我想用时间&时间属性的元数据,而不是写自定义数据和后处理它。

理想情况下,追加时间= t1,持续时间= d1,...(tn,dn)的项目数组会很棒。

有谁知道如何做到这一点?

回答

0

我已经结束了为视频文件添加章节而不是使用元数据的解决方案。

我看着可用的库,花了mpv4lib

该库目前未针对iOS编译,因此我将源项目移植到iOS平台的静态库中。

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

图书馆位于here