##Tutorial -2
初印象:所有tutorial圖像跑得**最快的**。如果看了后面的代碼,其實就知道原因,這里buffer有了就播放,這里沒有使用定時器來控制幀,更沒有和音頻同步。
### 測試用例A:微軟自帶野生動物.wmv
結果及簡要分析:失敗,原因是不支持中文名;
### 測試用例B:微軟自帶 wildlife
結果及簡要分析:成功播放,在 frameFinished加上斷點。結果表格如下:
~~~
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=-858993460
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=0
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=280
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=280
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=280
Function: SDL_main(int, char * *), Thread: 0x841C 主線程, frameFinished=280
后面省略上千次
~~~
### 測試用例C:ffmpeg sample: CLOCKTXT_320.avi'
測試結果及分析:
1.
格式的理解:覆蓋上yv12和最終顯示的yuv420
1.
第一次完整的認識sdl顯示的過程:設置surface,設置覆蓋,拷貝覆蓋,顯示(sdl_updateRec)
1.
第一次使用dump函數,看到結果如下:
~~~
[avi @ 003a3000] max_analyze_duration 5000000 reached at 5000000
Input #0, avi, from 'CLOCKTXT_320.avi':
Duration: 00:00:12.00, start: 0.000000, bitrate: 42 kb/s
Stream #0.0: Video: msrle, pal8, 320x320, 1 fps, 1 tbr, 1 tbn, 1 tbc
Stream #0.1: Audio: truespeech, 8000 Hz, 1 channels, s16, 8 kb/s
~~~
以上,第一次讀包,直覺是讀取的頭部信息。
由于樣本是clock,幀分別就是12個時刻對應的圖像,一幀一幀的跟蹤變化,對出圖過程的理解有很大幫助。
當前只處理圖像幀,如果要擴展聲音的處理,將在以下代表位置:
~~~
while (av_read_frame(pFormatCtx, &packet) >= 0) {//有時候是聲音,有時候是vedio
if (packet.stream_index == videoStream) {
~~~
### 小結:
**測試用例標準化了**,**入門建議使用簡單的測試案列**