最近在研究ffmpeg 編解碼,記錄下遇到的一些問題。
MP4解碼播放
1.在網上找的解碼播放代碼,打開一個MP4文件,讀取媒體格式信息,讀取幀數據,解碼,貼圖顯示,這些都很順利。
2.想着把這塊的內容封裝一下,可以直接播放H264流,但是在這里花了一些時間,播放H264裸流文件是沒有問題的,但是從MP4文件里面提取H264文件播放就不行了,主要是網上找到的一些東西說的不太准確。
a.av_read_frame讀取MP4文件出來的數據,avpacket.data里面包含的可能不止一幀,這個可以根據前面4個字節判斷一下。
b.獲取avpacket.data里面的每一幀,然后把前四個字節(一幀的長度)改成00000001解碼播放也是不行。avcodec_decode_video2函數返回大於0,但是got_picture_prt為0,也就是說沒有解出來數據。主要是因為沒有先把SPS和PPS發送給avcodec_decode_video2。(用其它工具獲取的H264文件里面都有保存SPS和PPS的)。
3.這里還有一個ffpeg + SDL音頻解碼播放的列子。