版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
FFMPEG的使用
2023/6/4Scott.Zheng目錄一、編譯二、解碼三、編碼四、去隔行五、縮放六、RTSP接口2Surveillancesolutions&services2023/6/4一、編譯
3Surveillancesolutions&services2023/6/4FFMPEG為開源項目,可以自由下載編譯和使用。后面關于FFMPEG的使用例程均以CentOS系統(tǒng)為平臺,不同平臺的編譯有一定的差異,但使用接口保持一致。下載:gitclonegit:///ffmpeg.gitffmpeg下載完成后會在當前目錄下生成一個ffmpeg子目錄,里面即是ffmpeg項目的全部源碼。編譯:進入ffmpeg子目錄,運行./configure完成環(huán)境配置,再運行make,系統(tǒng)開始編譯。如果需要安裝到當前系統(tǒng),編譯完成后運行makeinstall,相關的庫將會被拷貝到/usr/lib目錄下,頭文件也會被拷貝到/usr/include目錄下。./configure配置FFMPEG包含了大量的編解碼、MUX、DEMUX、PROTOCOL等模塊,我們在實際應用中并不需要這么多的模塊,這時候就需要修改FFMPEG的默認配置了。輸入./configure–help,可以顯示有那些選項可以修改。最常用的是—enable-shared,生成動態(tài)庫;--disable-programs,不生成命令行程序,這在生成庫時不需要;--disable-encoders、--disable-decoders,只做解碼時可以把編碼模塊去掉,只做編碼時可以把解碼模塊去掉。
根據自己的實際需要,刪除不需要的模塊,減小庫的大小還可以使編譯更容易通過。4Surveillancesolutions&services2023/6/4二、編碼
包含頭文件(不同FFMPEG版本頭文件有所差異)#include"avcodec/types.h"#include“avcodec/avcodec.h”定義變量AVCodec *codec;AVCodecContext *c=NULL;AVFrame *picture;BYTE pbuf[176*144*3/2],outbuf[176*144*3/2];int ret,ii;5Surveillancesolutions&services2023/6/4找到編碼模塊,申請資源,配置編碼參數
codec=avcodec_find_encoder(CODEC_ID_H263);if(codec==NULL) return;c=avcodec_alloc_context();picture=avcodec_alloc_frame();c->bit_rate =100000;c->width =176; c->height =144;c->time_base.num =1;c->time_base.den =25;c->gop_size =12;//c->max_b_frames =1;c->pix_fmt =PIX_FMT_YUV420P;6Surveillancesolutions&services2023/6/4打開編碼模塊,開始編碼if(avcodec_open(c,codec)<0) return;picture->data[0]=pbuf;picture->data[1]=picture->data[0]+176*144;picture->data[2]=picture->data[1]+176*144/4;picture->linesize[0]=c->width;picture->linesize[1]=c->width/2;picture->linesize[2]=c->width/2;for(ii=0;ii<50;ii++){ret=avcodec_encode_video(c,outbuf,176*144*3/2,picture);}7Surveillancesolutions&services2023/6/4釋放編碼資源avcodec_close(c);av_free(c);av_free(picture);8Surveillancesolutions&services2023/6/4三、解碼
9Surveillancesolutions&services2023/6/4包含頭文件(不同FFMPEG版本頭文件有所差異)#include"avcodec/types.h"#include“avcodec/avcodec.h”定義變量AVCodec *codec;AVCodecContext *c=NULL;AVFrame *picture;AVPacket avpkt;BYTE pbuf[176*144*3/2],outbuf[176*144*3/2];int ret,gotpiture;找到解碼模塊、分配資源、打開解碼模塊codec=avcodec_find_decoder(CODEC_ID_H264);av_init_packet(&avpkt);c=avcodec_alloc_context();picture=avcodec_alloc_frame();ret=avcodec_open(c,codec);avpkt.data=pbuf;avpkt.size=10000;ret=avcodec_decode_video2(c,picture,&got_picture,&avpkt);if(got_picture){picture->data[] //解碼輸出緩沖區(qū)picture->linesize[] //輸出緩沖區(qū)大小c->width/height; //圖像寬度/高度}10Surveillancesolutions&services2023/6/411Surveillancesolutions&services2023/6/4釋放解碼資源avcodec_close(c);av_free(c);av_free(picture);av_free_packet(&avpkt);四、去隔行
AVPicture dstbuf;BYTE outbuf[176*144*3/2],dstbuf.data[0]=outbuff;dstbuf.data[1]=outbuff+176*144;dstbuf.data[2]=outbuff+176*144+176*144/4;dstbuf.linesize[0]=176;dstbuf.linesize[1]=88;dstbuf.linesize[2]=88;avpicture_deinterlace(&dstbuf,(AVPicture*)picture,PIX_FMT_YUV420P,176,144);12Surveillancesolutions&services2023/6/4五、縮放
structSwsContext *img_convert_ctx;int sws_flags;structSwsContext *sws_opts;img_convert_ctx =NULL;sws_opts =NULL;AVPicture srcbuf,dstbuf;BYTE outbuf[176*144*3],if(img_convert_ctx==NULL){ if(sws_opts==NULL)
{sws_flags=SWS_BICUBIC; sws_opts=sws_getContext(176,144,PIX_FMT_YUV420P,176,144,PIX_FMT_RGB32,sws_flags,NULL,NULL,NULL);}sws_flags=(int)av_get_int(sws_opts,"sws_flags",NULL);img_convert_ctx=sws_getCachedContext(img_convert_ctx,176,144,PIX_FMT_YUV420P,176,144,PIX_FMT_RGB32,sws_flags,NULL,NULL,NULL); }13Surveillancesolutions&services2023/6/4srcbuf.data[0]+=(144-1)*srcbuf.linesize[0];srcbuf.data[1]+=(72-1)*srcbuf.linesize[1];srcbuf.data[2]+=(72-1)*srcbuf.linesize[2];srcbuf.linesize[0]=-srcbuf.linesize[0];srcbuf.linesize[1]=-srcbuf.linesize[1];srcbuf.linesize[2]=-srcbuf.linesize[2];dstbuf.data[0]=outbuff;dstbuf.linesize[0]=144*3;sws_scale(img_convert_ctx,srcbuf.data,srcbuf.linesize,0,144,dstbuf.data,dstbuf.linesize);if(img
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026西安市灞橋區(qū)十里鋪街辦華清園幼兒園招聘備考題庫及答案詳解參考
- 2026年靈活用工合規(guī)管理實務培訓
- 2026貴州農商聯合銀行第一批開招聘中層管理人員18人備考題庫參考答案詳解
- 2026首都師大附中科學城學校招聘備考題庫含答案詳解
- 2026貴州畢節(jié)市人才“蓄水池”崗位引進人才10人備考題庫及答案詳解參考
- 2026黑龍江牡丹江林口縣博物館編外講解員招聘2人備考題庫帶答案詳解
- 護理遠程會診的效果評估
- 財政涉農資金培訓課件
- 職業(yè)噪聲暴露的神經炎癥與認知損傷
- 職業(yè)健康防護的行業(yè)推廣策略
- 2026中國電信四川公用信息產業(yè)有限責任公司社會成熟人才招聘備考題庫及參考答案詳解1套
- 思政教師培訓心得課件
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人備考題庫及參考答案詳解
- LoRa技術教學課件
- 2025中央廣播電視總臺招聘144人筆試歷年題庫附答案解析
- 急性高原疾病課件
- 牧業(yè)公司生產安全預案
- 腦機接口科普
- 2025年湖北煙草專賣局招聘考試真題及答案
- 反向呼吸訓練方法圖解
- 肉雞采食量影響因素分析與調控研究進展
評論
0/150
提交評論