天天看點

利用ffmpeg做視訊解碼的順序

這幾天在實驗室搗鼓着用ffmpeg做視訊解碼,終于把資料解出來了,雖然還沒有做顯示部分,不知道解碼解得對不對,但料想是不會有什麼問題了.回頭看看這幾天的工作,其間也遇到了不少問題,主要還是對ffmpeg解碼過程不熟悉,現總結了ffmpeg解碼的順序大緻如下:

1.初始化解碼器:avcodec_init();

2.注冊所有格式和解碼器:av_register();

3.打開檔案:av_open_input_file(filename);

4.取出資料流資訊:av_find_stream_info();

5.判斷資料流是否為視訊,并提取器編碼資訊:avcodec->codec_type == code_id_video;

6.根據編碼資訊尋找相應的解碼器:avcodec_find_decoder(avcodeccontext->codec_id);

7.打開視訊解碼器:avcodec_open();

8.為視訊幀配置設定記憶體以存儲解碼後的圖檔:avcodec_alloc_frame()

9.确認緩沖區的大小并配置設定緩沖空間:avpicture_get_size(); avpicture_fill();

10.開始解碼直至所有幀均被讀出:avcodec_decode_video();