全網首發:FFMpeg使用NVIDIA DECODER,解碼後的數據是NV12,不是YUV420P

  在FreeSwitch順利啓用NVIDIA ENCODER之後(至少快10倍),下一步自然就是使用DECODER了。吾信心滿滿,結果是綠屏。嗯?怎麼回事?

  • 從比例上來看,是解碼成功。
  • 跟蹤代碼,也確實解碼成功。
  • 既然是綠屏,應該是沒數據變化。YUV格式,一個全0的緩衝區就是綠屏。
  • 跟蹤了一下,發現是在複製數據時,沒複製就返回了。

  顯然,解碼的格式,肯定不是YUV420P,是NV12。進行一次過濾即可。

硬解後的AVFrame:

format     == 23 (AV_PIX_FMT_NV12)
data[0]    != NULL
data[1]    != NULL
data[2]    == NULL
linesize[0]== 1280
linesize[1]== 1280
linesize[2]==    0

過濾後的AVFrame:

format     == 0 (AV_PIX_FMT_YUV420P)
data[0]    != NULL
data[1]    != NULL
data[2]    != NULL
linesize[0]== 1280
linesize[1]==  640
linesize[2]==  640

  最關心的是,怎樣抓到數據?參考:

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


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章