​av_register_all();​​​​//初始化ffmpeg库,如果系统里面的ffmpeg没配置好这里会出错​


​if​​ ​​(isNetwork) {​


​//需要播放网络视频​


​avformat_network_init();​


​}​


​avformat_open_input();​​​​//打开视频文件​


​avformat_find_stream_info();​​​​//查找文件的流信息​


​av_dump_format();​​​​//dump只是个调试函数,输出文件的音、视频流的基本信息了,帧率、分辨率、音频采样等等​


​for​​​​(...);​​​​//遍历文件的各个流,找到第一个视频流,并记录该流的编码信息​


​sws_getContext();​​​​//根据编码信息设置渲染格式​


​avcodec_find_decoder();​​​​//在库里面查找支持该格式的解码器​


​avcodec_open2();​​​​//打开解码器​


​pFrame=avcodec_alloc_frame();​​​​//分配一个帧指针,指向解码后的原始帧​


​pFrameRGB=avcodec_alloc_frame();​​​​//分配一个帧指针,指向存放转换成RGB后的帧​


​avpicture_fill(pFrameRGB);​​​​//给pFrameRGB帧加上分配的内存;​


​while​​​​(​​​​true​​​​)​


​{​


​av_read_frame();​​​​//读取一个帧(到最后帧则break)​


​avcodec_decode_video2();​​​​//解码该帧​


​sws_getCachedContext()sws_scale();​​​​//把该帧转换(渲染)成RGB​


​SaveFrame();​​​​//对前5帧保存成ppm图形文件(这个是自定义函数,非API)​


​av_free_packet();​​​​//释放本次读取的帧内存​


​}​