ffmpeg :使用libavcodec/libavformat

av_register_all();//初始化ffmpeg庫,若是系統裏面的ffmpeg沒配置好這裏會出錯 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();//釋放本次讀取的幀內存 }
av_free(buffer);   av_free(pFrameRGB);   av_free(pFrame);   avcodec_close(pCodecCtx);   avformat_close_input(&pFormatCtx);
 libavcodec:CODEC實際上是Coder/Decoder的縮寫,也就是編碼解碼器; libavdevice:對輸出輸入設備的支持; libavformat:對音頻視頻格式的解析 libavutil:集項工具; libpostproc:後期效果處理; libswscale:視頻場景比例縮放、色彩映射轉換;
相關文章
相關標籤/搜索