2013-05-01 136 views
3

我試圖用android低級別媒體api實時解碼h264 nals。
每個納爾包含一個完整的框架,所以我希望後餵我輸入輸入和呼籲dequeueOutputBuffer它會「立即」(當然延遲litle)顯示我的框架,但它沒有。我看到第一幀和出隊返回第一個緩衝區,只是爲解碼器提供第二個幀,此時應該渲染第二幀。幀編碼與x264 zerolatency預設,所以沒有b幀等...android mediacodec:實時解碼h264 nals

我想,可能有一種方法來設置編碼器立即渲染幀後,它得到它,但我找不到任何好文件/解釋。 有什麼建議嗎?

+0

我遇到過同樣的問題。我目前的理論是,似乎H.264沒有任何「幀結束」標記。因此,解碼器必須等待,直到它具有下一幀的數據才能完成解碼並顯示當前幀。對我而言,它只增加了大約25毫秒,但是我希望返回25毫秒。 – 2013-08-26 00:46:36

+0

即使使用I-Frame,我也有同樣的問題。但我仍然沒有解決方案。您是否成功實現了「實時」? – Soccertrash 2016-07-05 09:17:38

回答

0

僅僅因爲幀被編碼爲零延遲設置並不意味着它們將被解碼爲零延遲。兩個分開的東西。因此,根據編解碼器級別(分辨率,比特率,幀率)和配置文件的不同,您可能需要解碼多達16幀的h264視頻以獲取幀。

+0

感謝您的回答,但是從我的測試來看,當解碼器與下一個解碼器一起饋送時,無論延遲時間(20毫秒或10秒不變),幀都會顯示,所以它與解碼時間,但似乎是api的限制。 – Florian 2013-05-15 16:30:23

相關問題