タイム メタデータを .mov または .mp4 ビデオ ファイルに挿入しようとしています。私はそれについてここで読みました:
- Apple HTTP ライブ ストリーミングでのライブ ストリーム メタデータの読み取り
- http://jmacmullin.wordpress.com/2010/11/03/adding-meta-data-to-video-in-ios/
- https://developer.apple.com/streaming/
基本的に、私の問題は、何を試しても、生成された .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 秒ごとに 1 つの ts) が正常に生成されます。
それらを Web サーバーにアップロードし (もちろん、適切な 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 ファイルにメタデータが含まれていないか、少なくともどこかで何か間違っていると思い込んでいる理由ですが、できることはすべてチェックしましたが、今はアイデアがありません。