2010-08-30 43 views
24

iPad/iOS支持視頻流。 H.264使用MPMoviePlayerController等,但我通過自定義專有流接收H.264數據,需要在軟實時場景中解碼。
iPads/iOS的視頻解碼器可以通過任何方式進行訪問來解碼這些數據嗎?訪問iOS的視頻解碼器?

更新:顯然,iOS的4.0核心媒體框架supports decoding framesH.264知道,但沒有示例代碼和我可以看到我其實應該呼籲實際解碼。

+1

AVAssets不支持流式傳輸。看來,低層次的核心媒體框架是應該尋找的地方。 H.264編解碼器是在那裏定義的,這是一個好兆頭,並且有塊緩衝結構,您不必將整個資產存儲在內存或磁盤上。我希望看到代碼的任何部分,尤其是對於樣本緩衝區與圖層進行協調或捕捉的部分。 – 2010-09-01 17:05:19

+0

@彼得:謝謝,看起來更有希望。它似乎應該支持解碼到'CVImageBuffer',但我真的不知道實際解碼的功能是什麼。 – 2010-09-03 17:50:16

+0

MoviePlayer演示沒有幫助你嗎? http://developer.apple.com/iphone/library/samplecode/MoviePlayer_iPhone/Introduction/Intro.html – karlphillip 2010-09-08 16:10:10

回答

9

在提出Apple DTS的問題後,事實證明,目前無法解碼來自自定義流源的視頻數據。

我將爲此提交一個增強請求。

+0

增強請求是否對公衆開放?我想爲它投票:) – Gili 2012-09-14 21:19:21

+0

@Gili:不,但你也可以打開一個bug /增強請求。 – 2012-11-02 09:18:36

+0

嗨,喬治。我知道自那以後相當長的一段時間,但對這個問題仍然沒有很好的答案。 如果有任何使用自定義流源的方式,請分享一下嗎?太感謝了! – 2015-06-17 02:44:20

1

您是否嘗試將從協議接收到的H.264流寫入臨時文件,然後一直寫入足夠的字節以避免緩衝播放,並將臨時文件的URL傳遞給臨時文件的MPMoviePlayerController?

4

如果你仍然有問題,我建議你看看libavcodec解碼數據(在ffmpeg project上可用)。

dranger有很多ffmpeg教程,展示瞭如何正確解碼(通過libavcodec)和顯示視頻數據(使用libsdl)等等。

+0

此時我並沒有尋找替代品,但無論如何感謝。 – 2010-09-10 06:51:10

+0

有趣。然而,libavcodec是LGPL,據我瞭解,它不能用於商業iOS應用程序(因爲它需要靜態鏈接)。或者我誤解了一些東西? – Sander 2012-03-06 11:31:49

+1

這[細線程](https://news.ycombinator.com/item?id=3341852)討論了一些問題。 – karlphillip 2012-03-06 11:42:15

0

使用iOS 8,您可以使用視頻工具箱(https://developer.apple.com/reference/videotoolbox)將H264解碼爲原始幀。 VT API是硬件加速的,與libavcodec相比,它會爲您提供更好的性能。如果您想播放這些幀或生成預覽,可以使用基於eagl的渲染器播放。我已經編寫了一個示例應用程序來將幀從原始幀編碼爲h.264(https://github.com/manishganvir/iOS-h264Hw-Toolbox)。生h.264應該不是那麼困難!