天天看點

播放視訊時有殘影、水紋的原因

關鍵字:播放 殘影

簡介:播放有殘影、水紋,是因為某些幀沒有參與解碼。

專門截圖,可以看看是怎樣的:

https://blog.csdn.net/quantum7/article/details/89297300

以前做視訊的時候,因為軟解性能差,對于1080P無能為力,于是想到了硬解。找到了硬解資料調通,測試播放時發現,開始幾秒還好,過一會就有類似水紋的殘影。反複檢查、修改代碼,找不到原因,也無法解決此問題,隻好放棄。

近來做新的視訊播放功能,突然發現平常播放(調用了硬解)正常的功能,也有了殘影水紋。開始以為是代碼問題,反複檢查、復原,沒有解決;後來以為是發送方問題,又一番折騰,還是沒有解決。經過一個星期的反複折騰,找不到原因,隻能放棄。

之後發現播放時幀率,低于發送方的幀率。于是又檢查代碼,原來有人根據自己了解,随意加了一個幀率控制代碼(實際上對于發送、接收來說,幀都不是均勻到達的)。去掉這部分代碼後,幀率正常了,殘影也很神奇的沒有了。

于是就明白了,殘影水紋産生的原因是:編碼方編碼(軟編、硬編)産生的幀,解碼方(使用硬解,軟解一般無此問題)隻解碼了一部分。出現這種情況,有幾種可能:

編碼了,發送時做了控制,過濾了一些。

網絡太差,接收方丢棄了不完整的幀。這隻會偶爾發生。各位在看網絡視訊時,也會發現這種情況。

硬體解碼時播放時做了控制,放棄了一些幀。

考慮到實際情況,幀率控制應該在發送方處理,而且要在編碼之前。