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();//釋放本次讀取的幀內存 }