在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