7

我尝试将定时元数据插入 .mov 或 .mp4 视频文件。我确实在这里读过它:

基本上,我的问题是无论我尝试什么,我都会按预期得到生成的 .m3u8 和一堆 .ts 文件,没有任何错误,但我觉得元数据没有插入。

让我详细解释一下我的工作。

首先,我生成一些 id3 标签,如下所示:

id3taggenerator -o tag1.id3 -t "Test"

然后我编写了一个名为“macrofile.txt”的宏文本文件,其中包含:

5 id3 tag1.id3

我确保文件以换行符结尾,并且每个字段由一个空格而不是制表符分隔。

然后,我使用 mediafilesegmenter 创建带有 .ts 文件的 m3u8,其命令还包括宏文件,如下所示:

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。

如果我尝试使用 Apple 测试流(https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8),其中包含每 5 秒一次的定时元数据 -> 它可以完美运行

所以这就是为什么我假设我生成的 .ts 文件不包含任何元数据,或者至少我在某个地方做错了什么,但我检查了我能做的一切,现在我没有想法了。

4

2 回答 2

5

在这上面花了更多时间后,我决定联系 Apple 开发者技术支持。

确实是mediafilesegmenter工具最新版本1.1(130110)的一个bug

这是访问错误报告的直接链接 https://bugreport.apple.com/cgi-bin/WebObjects/RadarWeb.woa/67/wo/quUWkJlEHk4L6S6U9geEZ0/21.83.28.0.13

BUG ID为13178898

一旦错误得到解决或 Apple 为我提供了解决方法,我将在此处更新我的答案。

于 2013-02-08T08:13:10.373 回答
1

这个 wordpress 博客在您遇到的问题方面对我有很大帮助。https://jmacmullin.wordpress.com/2010/11/03/adding-meta-data-to-video-in-ios/

于 2015-03-30T00:27:43.320 回答