![](/img/trans.png)
[英]How to depacketize the fragmented frames in RTP data (over UDP) for H265/HEVC?
[英]Why does H265 decoder has to wait for tens of frames of data before start decoding?
我正在嘗試基於H265編解碼器以C ++構建實時視頻流應用程序。 我的應用程序非常關注實時性能,並且我建立了一個單線程程序來測試H265編解碼器。 該程序有一個簡單的管道:
我嘗試了AV_CODEC_ID_HEVC
X265/DE265
組合,以及X265/DE265
組合中的AV_CODEC_ID_HEVC
編碼器和解碼器, avcodec
發現一種現象,即解碼器在第一幀數據到達后不會立即解碼,並且必須等到大約30幀數據開始輸出解碼結果之前。 情況看起來像這樣:
**encoding** **decoding**
frame 1: succeeded -> no frame decoded
frame 2: succeeded -> no frame decoded
frame 3: succeeded -> no frame decoded
...
frame 30: succeeded -> no frame decoded
frame 31: succeeded -> frame 1 outputted
frame 32: succeeded -> frame 2 outputted
...
這將導致編碼器延遲1到2秒。 我想知道為什么以及是否有辦法避免這種情況。
謝謝!
原因之一可能是B切片中的正向引用。
例如,通過選擇具有分層結構的大小為32的圖片組(GOP),您可以施加大約1秒的解碼延遲(假設25fps)。
更准確地說,第二幀的重建(第一幀是Intra,因此可獨立解碼)可能間接取決於您的第32幀。
這種編碼模式通常稱為隨機訪問。 查一下 您可以使用LowDelayP模式避免這種情況。 或全部內部。 換句話說,延遲取決於您的GOP結構。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.