我尝试将定时元数据插入到.mov或.mp4视频文件中。 我在这里读过它:
基本上,我的问题是无论我尝试什么,我都会按预期获得生成的.m3u8和一堆.ts文件,没有任何错误,但我觉得没有插入元数据。
让我详细解释一下我的所作所为。
首先我生成一些id3标签,如下所示:
id3taggenerator -o tag1.id3 -t "Test"
然后我写了一个名为'macrofile.txt'的宏文本文件,其中包含:
5 id3 tag1.id3
我确保文件以换行符结尾,每个字段由一个空格而不是标签分隔。
然后我使用mediafilesegmenter创建带有.ts文件的m3u8,其命令也包含macrofile,如下所示:
mediafilesegmenter -index-file test.m3u8 -M macrofile.txt -no-floating-point-duration -iframe-index-file none test.mp4
这将成功生成m3u8文件+一堆.ts文件(每10秒视频一个ts)
我将这些内容上传到我的网络服务器上(显然我添加了正确的MIME类型等),然后从我的iOS应用程序中打开流:
NSURL* url = [NSURL URLWithString:@"http://url.com/test.m3u8"];
player = [[MPMoviePlayerController alloc] initWithContentURL:url];
我还要确保添加MPMoviePlayerTimedMetadataUpdatedNotification通知,如下所示:
NSNotificationCenter *center = [NSNotificationCenter defaultCenter];
[center addObserver:self
selector:@selector(metadataUpdate:)
name:MPMoviePlayerTimedMetadataUpdatedNotification
object:nil];
现在的问题是,永远不会触发MPMoviePlayerTimedMetadataUpdatedNotification。
如果我尝试使用每5秒包含定时元数据的Apple测试流(https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8) - >它完美地运作
所以这就是为什么我假设我生成的.ts文件不包含任何元数据,或者至少我在某处做错了什么,但我检查了所有可能的内容,现在我已经没有想法了。
希望有人能帮助我。
谢谢!
答案 0 :(得分:4)
在花了一点时间之后,我决定联系Apple开发者技术支持。
这确实是最新版mediafilesegmenter工具1.1(130110)中的一个错误
以下是访问错误报告的直接链接 https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/67/wo/quUWkJlEHk4L6S6U9geEZ0/21.83.28.0.13
BUG ID 13178898
一旦错误得到解决或Apple给我解决方法,我就会在这里更新我的答案。
答案 1 :(得分:0)
这个wordpress博客对你遇到的问题给予了极大的帮助。 https://jmacmullin.wordpress.com/2010/11/03/adding-meta-data-to-video-in-ios/