2
我想了解ffmpeg流視頻處理的知識。ffmpeg如何從['P'幀]計算完整幀['I'幀]。它在概念上是正確的?
我的理解:
我從IPED Camaera,像「IPPPPPPPPPPPPPPPPIPPPPPPP」的幀得到..
框架「我」是一個完整的框架,其中爲框架「P」依賴於前面無論是「P」還是「I」都是關閉的。
我用avcodec_decode_video2
while (av_read_frame (context, &packet) >=0)
{
//LOGD (" Received PACKET...DTS and PTS %ld and %ld ", packet.pts, packet.dts);
if(packet.stream_index == videoStreamIndex) {
avcodec_decode_video2 (pCodecCtx, pFrame, &finished, &packet);
if (finished) {
// Here is my frame, getting the type by av_get_picture_type_char(pFrame->pict_type).
}
}
現在,當我只顯示我已收到幀獲得框架,看起來像每當「我」收到的幀,它顯示正常,當收到「P」幀,圖像是一個折騰。
1)我們需要手動進行任何計算以將'P'幀轉換爲'I'幀,以便它可以被渲染? 2)如果不是(1),我必須注意什麼?.. DTS/PTS計算是否在這裏做魔術?
感謝喬治,如果我只對顯示視頻幀感興趣,我還需要做PTS/DTS計算嗎? – Whoami
您需要從幀中獲取PTS信息,告訴您何時顯示特定幀(否則您的視頻將播放的速度與設備一樣快)。 DTS你不應該在意,因爲它們是由FFmpeg本身處理的。 –
謝謝,你有沒有參考,如何處理點計算,因爲它真的很混亂,沒有人提供具體的解釋。 – Whoami