##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) {
~~~
### 小结:
**测试用例标准化了**,**入门建议使用简单的测试案列**