2013-02-01 42 views
6

我試圖將定時元數據插入到.mov或.mp4視頻文件中。 我沒有在這裏讀到它:使用id3taggenerator和mediafilesegmenter將定時元數據插入HLS(HTTP實時流)

基本上,我的問題是,無論我嘗試,我得到的產生.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文件不包含至少任何元數據或我在某個地方做錯了事,但我檢查了我所能做的一切,現在我沒有想法。

希望有人能幫助我。

謝謝!

+0

您是否試過在十六進制編輯器中打開.ts文件?如果他們在那裏,ID3應該顯示在前面。 –

+0

使用帶有mediafilesegmenter Beta版本1.1(130110)的宏文件注入元數據時,它根本行不通。當我用HEX編輯器看時,它只注入空的ID3。如果我使用-F -y參數注入id3(不使用宏文件),那麼我可以在HEX編輯器中清楚地看到正確的ID3,它可以工作。問題:要注入定時元數據,只能使用宏文件來做這件事...有人遇到同樣的問題?我開始想知道它是不是在這個版本的mediafilesegmenter中的錯誤..也許有人可以指向我的安裝程序的舊版本嘗試?謝謝 –

回答

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是

我會盡快在這裏更新我的答案是錯誤的解決或蘋果公司給了我一個解決方法。

+0

也嘗試過mediafilesegmenter版本1.1(120821),它也不起作用。我會盡力找到更早的版本。 –

+0

想知道如果你找到一個工程! – GnarlyDog

+0

此錯誤似乎在2013年4月25日發佈的HTTP Live Streaming工具中得到解決。 – GnarlyDog

相關問題