Mediacodec編碼后的h264視頻出現馬賽克問題


 

問題:在視頻采集后,通過Mediacodec編碼生成h264視頻文件,播放時出現馬賽克較多,無論調整幀率、碼率、還是分辨率都不能解決問題

出現問題的原因:編碼時傳入的時間戳不對。時間戳是視頻播放的標准,應該以采集一幀畫面時的時間為准,而不應該是編碼時的時間,所以編碼時傳入的時間戳可以使用采集該幀數據時的時間。

 

關於網上用固定步長增加的變量作為時間戳的方式,個人認為不是很准確。

個人認為比較准確的方法就是在獲取攝像頭采集到的原始數據之后,可以通過long stamptime = System.nanoTime()獲取到當前時間戳,然后在編碼時將stamptime傳入queueInputBuffer(........)中,就可保證編碼后的視頻沒有馬賽克。

切忌stamptime在編碼時才獲取,因為在采集到編碼之間,可能需要轉換YUV格式(如采集的是YV12格式,編碼需要傳入的是YUV420sp格式),這會耗時(時間長短可能是變化的),就造成了此時的時間與原始畫面的時間間隔存在差異,如果在此時獲取stamptime傳入queueInputBuffer(........),編碼的幀在時間上不連續,形成馬賽克

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM