您的位置:首页 > 其它

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

2015-07-13 15:50 477 查看
本文主要是 利用 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 \
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: