我試圖將定時元數據插入到.mov或.mp4視頻文件中。 我沒有在這裏讀到它:使用id3taggenerator和mediafilesegmenter將定時元數據插入HLS(HTTP實時流)
- Live stream metadata reading in Apple HTTP Live Streaming
- http://jmacmullin.wordpress.com/2010/11/03/adding-meta-data-to-video-in-ios/
- https://developer.apple.com/resources/http-streaming/
基本上,我的問題是,無論我嘗試,我得到的產生.m3u8和一堆。 ts文件按預期沒有任何錯誤,但我覺得不插入元數據。
讓我詳細解釋我做了什麼。
首先,我產生了一些ID3標籤如下:
id3taggenerator -o tag1.id3 -t "Test"
然後我寫所謂的「macrofile.txt」包含宏文本文件:
5 id3 tag1.id3
我確保了文件結束換行符和每個字段由單個空格分隔,而不是製表符。
然後我用mediafilesegmenter創建與該命令的.ts文件還包括MACROFILE如下的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永遠不會觸發。
如果我嘗試與蘋果測試流(https://devimages.apple.com.edgekey.net/resources/http-streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8),包括定時元每5秒 - >它完美
所以這就是爲什麼我認爲我的生成.ts文件不包含至少任何元數據或我在某個地方做錯了事,但我檢查了我所能做的一切,現在我沒有想法。
希望有人能幫助我。
謝謝!
您是否試過在十六進制編輯器中打開.ts文件?如果他們在那裏,ID3應該顯示在前面。 –
使用帶有mediafilesegmenter Beta版本1.1(130110)的宏文件注入元數據時,它根本行不通。當我用HEX編輯器看時,它只注入空的ID3。如果我使用-F -y參數注入id3(不使用宏文件),那麼我可以在HEX編輯器中清楚地看到正確的ID3,它可以工作。問題:要注入定時元數據,只能使用宏文件來做這件事...有人遇到同樣的問題?我開始想知道它是不是在這個版本的mediafilesegmenter中的錯誤..也許有人可以指向我的安裝程序的舊版本嘗試?謝謝 –