FFMPEG使用说明课件.ppt

上传人(卖家):三亚风情 文档编号:2950384 上传时间:2022-06-14 格式:PPT 页数:16 大小:422.50KB
下载 相关 举报
FFMPEG使用说明课件.ppt_第1页
第1页 / 共16页
FFMPEG使用说明课件.ppt_第2页
第2页 / 共16页
FFMPEG使用说明课件.ppt_第3页
第3页 / 共16页
FFMPEG使用说明课件.ppt_第4页
第4页 / 共16页
FFMPEG使用说明课件.ppt_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、1Surveillance SolutionsFFMPEGFFMPEG的使用的使用2022-6-3Scott.Zheng目目 录录一、编译一、编译二、解码二、解码三、编码三、编码四、去隔行四、去隔行五、缩放五、缩放六、六、RTSP接口接口2Surveillance solutions & services2022-6-3一、编译编译3Surveillance solutions & services2022-6-3 FFMPEG为开源项目,可以自由下载编译和使用。 后面关于FFMPEG的使用例程均以CentOS系统为平台,不同平台的编译有一定的差异,但使用接口保持一致。 下载: git clo

2、ne git:/source.ffmpeg.org/ffmpeg.git ffmpeg 下载完成后会在当前目录下生成一个ffmpeg子目录,里面即是ffmpeg项目的全部源码。 编译:进入ffmpeg子目录,运行./configure完成环境配置,再运行make,系统开始编译。如果需要安装到当前系统,编译完成后运行make install,相关的库将会被拷贝到/usr/lib目录下,头文件也会被拷贝到/usr/include目录下。./configure配置 FFMPEG包含了大量的编解码、MUX、DEMUX、PROTOCOL等模块,我们在实际应用中并不需要这么多的模块,这时候就需要修改FFM

3、PEG的默认配置了。输入./configure help,可以显示有那些选项可以修改。 最常用的是enable-shared,生成动态库; -disable-programs,不生成命令行程序,这在生成库时不需要; -disable-encoders、-disable-decoders,只做解码时可以把编码模块去掉,只做编码时可以把解码模块去掉。 根据自己的实际需要,删除不需要的模块,减小库的大小还可以使编译更容易通过。4Surveillance solutions & services2022-6-3二、编码二、编码 包含头文件(不同包含头文件(不同FFMPEG版本头文件有所差异)版本头文件

4、有所差异) #include avcodec/types.h #include “avcodec/avcodec.h” 定义变量定义变量 AVCodec*codec; AVCodecContext*c= NULL; AVFrame*picture; BYTEpbuf176*144*3/2,outbuf176*144*3/2; intret,ii;5Surveillance solutions & services2022-6-3 找到编码模块,申请资源,配置编码参数找到编码模块,申请资源,配置编码参数codec = avcodec_find_encoder( CODEC_ID_H263 );i

5、f( 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;6Surveillance solutions & services2022-6-3 打开编码模块,开始编码打开编码模块,开始编码if(

6、 avcodec_open( c, codec ) picture-data0 = pbuf; picture-data1 = picture-data0 + 176*144; picture-data2 = picture-data1 + 176*144 / 4; picture-linesize0 = c-width; picture-linesize1 = c-width / 2; picture-linesize2 = c-width / 2; for( ii=0; iiret = avcodec_encode_video( c, outbuf, 176*144*3/2, pictur

7、e );7Surveillance solutions & services2022-6-3 释放编码资源释放编码资源 avcodec_close( c ); av_free( c ); av_free( picture );8Surveillance solutions & services2022-6-3三、解码三、解码9Surveillance solutions & services2022-6-3 包含头文件(不同包含头文件(不同FFMPEG版本头文件有所差异)版本头文件有所差异)#include avcodec/types.h#include “avcodec/avcodec.h”

8、 定义变量定义变量 AVCodec*codec; AVCodecContext*c= NULL; AVFrame*picture;AVPacketavpkt;BYTEpbuf176*144*3/2,outbuf176*144*3/2;intret,gotpiture; 找到解码模块、分配资源、打开解码模块找到解码模块、分配资源、打开解码模块codec = avcodec_find_decoder( CODEC_ID_H264 );av_init_packet( &avpkt );c = avcodec_alloc_context();picture = avcodec_alloc_frame(

9、);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/ 解码输出缓冲区picture-linesize/ 输出缓冲区大小c-width/height;/ 图像宽度/高度10Surveillance solutions & services2022-6-311Surveillance solutions & services2

10、022-6-3 释放解码资源释放解码资源 avcodec_close( c ); av_free( c ); av_free( picture ); av_free_packet( &avpkt );四、去隔行四、去隔行AVPicturedstbuf;BYTEoutbuf176*144*3/2,dstbuf.data0 = outbuff;dstbuf.data1 = outbuff + 176*144;dstbuf.data2 = outbuff + 176*144 + 176*144/4;dstbuf.linesize0 = 176;dstbuf.linesize1 = 88;dstbuf

11、.linesize2 = 88;avpicture_deinterlace(&dstbuf,(AVPicture*)picture,PIX_FMT_YUV420P,176,144);12Surveillance solutions & services2022-6-3五、缩放五、缩放struct SwsContext*img_convert_ctx;intsws_flags;struct SwsContext*sws_opts;img_convert_ctx= NULL;sws_opts= NULL;AVPicturesrcbuf,dstbuf;BYTEoutbuf176*144*3,if(

12、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, P

13、IX_FMT_YUV420P, 176, 144, PIX_FMT_RGB32, sws_flags, NULL, NULL, NULL);13Surveillance solutions & services2022-6-3srcbuf.data0 += (144-1)*srcbuf.linesize0;srcbuf.data1 += (72-1)*srcbuf.linesize1;srcbuf.data2 += (72-1)*srcbuf.linesize2;srcbuf.linesize0 = -srcbuf.linesize0;srcbuf.linesize1 = -srcbuf.li

14、nesize1;srcbuf.linesize2 = -srcbuf.linesize2;dstbuf.data0 = outbuff;dstbuf.linesize0 = 144*3;sws_scale( img_convert_ctx, srcbuf.data, srcbuf.linesize, 0, 144, dstbuf.data, dstbuf.linesize );if( img_convert_ctx )sws_freeContext( img_convert_ctx );if( sws_opts )av_free( sws_opts );14Surveillance solutions & services2022-6-3六、RTSP接口15Surveillance solutions & services2022-6-316Surveillance SolutionsThank you for your attention2022-6-3

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(FFMPEG使用说明课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|