利用ffmpeg的配置configure来实现裁剪

3 篇文章 0 订阅
2 篇文章 0 订阅


本文主要是 利用 ffmpeg的configure脚本来进行裁剪,由于ffmpeg中实现几十种音视频压缩格式、输入设备、输出设备、封装格式、解封装、协议的支持,生成的库能够达到100多M字节,对于移动端的app嵌入来说,实在是庞大!


下面是 支持MP4封装、支持H.264、H.265、AAC解码、支持RTMP协议的ffmpeg,生成后的ffmpeg大小在5M以内

解码库:libavcodec.a 大小在4M左右

./configure \
--disable-debug \
--disable-doc \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--disable-encoders  \
--disable-muxers \
--disable-demuxers \
--disable-parsers  \
--disable-bsfs \
--disable-protocols \
--disable-indevs \
--disable-outdevs \
--disable-filters \
--disable-decoders \
--enable-decoder=h264 \
--enable-decoder=hevc \
--enable-decoder=aac \
--enable-muxer=mp4  \
--enable-muxer=rawvideo  \
--enable-encoder=rawvideo  \
--enable-protocol=file \
--enable-protocol=rtmp

make -j4


make -j4 是进行编译,j4表示是使用4线程进行编译,多核CPU下可以加速编译速度,在目前的配置脚本下,编译时间大致是3分钟

--enable-protocol=file \
刚开始没有加上面这个选项,出了莫名其妙的错误,调试了半天,一直是下面的错误,找不到协议,用“./configure --list-protocols”打印支持的协议发现里面有个file才醒悟,ffmpeg将输入进行统一,输入的文件也属于协议,不加入file的支持是不能读入文件的,我之前以为TCP、UDP之类的才是协议

 ffmpeg_opt.c open_input_file() start......

 	 filename= ./avs2/akiyo_qcif_1f_ai_RD11.0.avs
 	 format= (null)
 	 o->nb_frame_rates= (null)
fmt1: avs2    No URL Protocols are registered. Missing call to av_register_all()?
./avs2/akiyo_qcif_1f_ai_RD11.0.avs: Protocol not found



--enable-muxer=rawvideo  \
--enable-encoder=rawvideo  \
刚开始没加入上面这两个选项,想把解码后的帧输出为YUV文件,一直出错,找不到输出对应的文件

原因是YUV文件,在ffmpeg中对应编码器为rawvideo、封装器对应rawvideo,加上这两个选项后,能够保存YUV文件


如果想增加其他的功能,自己修改配置脚本即可!

下次继续!



--enable-muxer=rawvideo  \
--enable-encoder=rawvideo  \
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值