编译:ffmpeg,精简ffmpeg.exe
网上下载的各种 ffmpeg.exe ,最少都有11M+
而我只需要处理 mp4 和 mp3,在网上搜索了一下精简ffmpeg的文章,折腾一天,也没有完全搞定,但多少有些收获,记录一下:
从 www.ffmpeg.org 下载 ffmpeg 最新源码代码。
libx264, libxvid, libmp3lame, libvo-aacenc 都需要下载源代码进行编译,我将编译后都保存到 /msys/static/
/c/open_source/lame-3.99.5 (下载地址:http://lame.sourceforge.net)
下载http://jaist.dl.sourceforge.net/project/nasm/Win32 binaries/2.07/nasm-2.07-installer.exe,
然后改名为nasm.exe然后复制到/msys/bin目录下
configure --disable-shared --enable-static --prefix=/static
/c/open_source/x264 (下载地址:http://www.videolan.org/developers/x264.html)
configure --enable-static [我没加这个,也不知道要不要加:--enable-win32thread] --prefix=/static
/c/open_source/xvidcore-1.3.3/build/generic (下载地址: http://downloads.xvid.org/downloads/xvidcore-1.3.3.tar.gz )
configure --enable-static --prefix=/static
(我编译ffmpeg时,没使用 xvid)
/c/open_source/vo-aacenc-0.1.3 (下载地址:http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/) (看别人都使用这个)
configure --disable-shared --enable-static --prefix=/static
在编译ffmpeg前, 通过命令:configure --help,可查看可配置的参数
通过命令: configure --list-decoders,显示可用的解码器列表
通过命令: configure --list-encoders,显示可用的编码器列表
我目前只需要解编码mp3, 需要使用 mjpeg, 和 h264等。
经过两天的不断测试和失败,终于获取一个较小的ffmpeg.exe (8.54M)
精简思路:先禁用所有解码器(--disable-encoders)和编码器(--disable-decoders),然后再开启需要的解码器和编码器。
命令:
configure --enable-static --disable-shared --enable-version3 --enable-gpl --enable-memalign-hack --disable-w32threads --disable-encoders --enable-encoder=aac --enable-encoder=libmp3lame --enable-encoder=libvo_aacenc --enable-encoder=libx264 --enable-encoder=y41p --enable-encoder=yuv4 --disable-decoders --enable-decoder=aac --enable-decoder=aac_latm --enable-decoder=mp3adu --enable-decoder=mp3adufloat --enable-decoder=mp3float --enable-decoder=mp3on4 --enable-decoder=mp3on4float --enable-decoder=mjpeg --enable-decoder=y41p --enable-decoder=mp3 --disable-ffplay --disable-ffprobe --disable-ffserver --disable-network --disable-doc --enable-libx264 --enable-libmp3lame --enable-libvo-aacenc --extra-cflags=-I/static/include --extra-ldflags=-L/static/lib --prefix=/local/ffmpeg-sdk
这里的 --enable-encoder=libx264 和 --enable-libx264 也就代替了(--enable-encoder=mpeg4)。
之前测试过多次,如果使用--enable-encoder=mpeg4,生成的mp4文件很大,并且画质很差)
如果加上参数: --enable-small, 生成的ffmpeg.exe 会缩小1.5M左右,这个参数是优化压缩文件,有可能会降低性能)
编译后,使用 ffmpeg.exe 时,经常提示:
Use -pix_fmt yuv420p for compatibility with outdated media players.(使用-pix_fmt YUV420P与过时的媒体播放器兼容。)
测试时发现,如果输出的视频尺寸:800 x 800, 输出后的视频文件双击打开,看不到图像,一片黑。
我试着加上 -pix_fmt yuv420p, 再输出 800 x 800的视频,就能正常看到图像了。
我以前使用过别人在2011年左右编译的ffmpeg.exe,不会提示这样的信息。
使用 ffmpeg.exe时,还提示:
[mjpeg @ 0172afc0] Warning: not compiled with thread support, using thread emulation(警告:不支持线程编译,使用线程模拟)
[mp3 @ 017632e0] Warning: not compiled with thread support, using thread emulation
我使用以前别人编译的ffmpeg,也不会出现这样的提示。
ffmpeg 编译的时候, make 一次,花费了20多分钟
---------------------------------------------------------------------------------------------
ffmpeg -codecs 查询编解码配置:
第一个D表示Decoder,该格式能够解码;
E表示Encoder,该格式可以编码。
DEA D mp2 MP2 (MPEG audio layer 2)
D A D mp2float MP2 (MPEG audio layer 2)
D A D mp3 MP3 (MPEG audio layer 3)
上面的 DEA D mp2 表示: mp2支持编码和解码。
D A D mp3 表示: mp3只支持解码。
---------------------------------------------------------------------------------------------
相关的文章:
windows下使用MinGW+msys编译ffmpeg http://www.cnblogs.com/zjoch/archive/2013/05/14/3077953.html
ffmpeg的编译大全 http://www.cnblogs.com/MaxIE/archive/2007/02/03/638863.html
ffmpeg的精简 http://blog.csdn.net/hevc_cjl/article/details/8680933
ffmpeg编译(一) http://blog.csdn.net/jxfengzi/article/details/7365300
ffmpeg ./configure参数说明 http://blog.163.com/cgq_i/blog/static/728779232011643431105/
2014-07-31
名品推荐:千骄马 桃太郎 安遇安琦
转载于:https://www.cnblogs.com/personnel/p/4585037.html
编译:ffmpeg,精简ffmpeg.exe相关推荐
- Windows7_x64下编译64位ffmpeg
一点心青的文章指导得非常详细,本应是非常顺利的.但我仍然为编译64位ffmpeg耽误了很久,现在总结一下经验教训: 1. 经验:在编译SDL的时候,我直接使用了1.2.5的版本,省去了很多麻烦: 2. ...
- Window下编译 64位ffmpeg 引入libx264及libmp3lame编码库
好记性不如烂笔头,每次编译总要有些时间折腾,记录下编译过程,方便后来者. 本文 介绍windows下编译64位Ffmpeg库 (版本V4.02)如何引入libx264及libmp3lame(编码mp3 ...
- win7下编译android版ffmpeg
参考: http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ ffmpeg用的是2.3.2版本. 困扰了很久,终于使用参考链接里的脚本成功编译 ...
- Windows编译和使用ffmpeg
文章目录 一.ffmpeg编译选项说明 1.增加编译选项 2.减少不必要的工具 3.减少不必要的模块 4.减少不必要设备的编译 5.减少不必要解析器的编译 6.减少不必要的二进制流过滤器的编译 7.减 ...
- FFmpeg使用---FFmpeg程序的使用(ffmpeg.exe, ffplay.exe, ffprobe.exe)
一.FFmpeg程序的使用(ffmpeg.exe, ffplay.exe, ffprobe.exe) 本章主要介绍一下ffmpeg工程包含的三个exe的使用方法. ffmpeg的官方网站是:http: ...
- 使用emcc工具编译最新的ffmpeg
前言 使用emcc工具编译最新的ffmpeg 提示:以下是本篇文章正文内容,下面案例可供参考 一.编译环境及版本 系统版本:macos big sur emscripten版本:2.0.8 ffmpe ...
- VMWare中Ubuntu 20.04.3 LTS编译、安装FFmpeg
记:准备入坑FFmpeg了,之前在Windows平台尝试编译FFmpeg源码,屡次失败,准备先在Ubuntu环境编译进行学习,之后再尝试在Windows环境下编译源码. 一.准备 Ubuntu 20. ...
- Mac OS X下编译并搭建ffmpeg开发环境及常见错误处理
首先官网下载源码文件:http://www.ffmpegmac.net/,注意点击"Download Now!"字样下面的"sourcecode"进行下载.下载 ...
- 六、FFmpeg使用---ffmpeg依赖x264库
上篇文章五.FFmpeg使用---x264编译_[零声教育]音视频开发进阶的博客-CSDN博客粗略的讲了一下如何编译X264,和之前FFmpeg的编译方式差不多,就是脚本有点差异. 接下来讲一 ...
最新文章
- 重新开始 2011/11/25
- 破局:自动驾驶人才断层困境
- python本地读csv文件_python读写csv文件方法详细总结
- 面试常考!缓存三大问题及解决方案
- UTF-8编码规则(转)
- 初学者web前端知识点--HTML部分
- python sql逐行读取数据库数据,使用python读取数据库中的内容 把爬虫爬到的内容,存储在mysql数据库中...
- 计算机更新80072f76,windows update 80072f76错误
- cm201–2刷机短接教程_Jetson TX2 刷机教程(JetPack4.2版本)
- Ruby on Rails,创建开发用的MYSQL数据库
- linux终端下的网页浏览器w3m
- 获取 HttpServletRequest 所有参数,获取所有Httpsession中参数
- 单片机C语言程序设计实训 100例—基于 8051+Proteus仿真
- 计算机考研2017真题408,2017计算机408考研真题.pdf
- 实战分享:如何通过黑帽SEO快速获取庆余年这类电视剧流量
- spring项目接入flyway(一) 背景、快速入门
- mac php pear pecl,mac 安装 pecl pear
- 程序员软考真题__专项:数据结构与算法 02
- 怎样删除计算机中的来宾用户密码,win7怎么删除来宾账户_win7如何删除来宾账户...
- 用户画像标签维度_用户画像详解:关于用户画像的What、Why、How
热门文章
- leetcode —— 783. 二叉搜索树结点最小距离
- leetcode - 375. 猜数字大小 II
- 【渗透测试】XSS注入原理
- 透视变换--图像拼接
- OpenCV单目视觉定位(测量)系统(新增 含代码)(转载)
- html给背景架渐变,JS和CSS实现渐变背景特效的代码
- git merge用法_Git 基本命令 merge 和 rebase,你真的了解吗?
- swift文档_Swift 正式进入 Windows 平台
- c语言字母随机初始值,C语言的未初始化的数组的值为什么是随机的
- php fs 上传文件,PHP操作GridFS存储文件到MongoDB的三种方式