编译: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
编译:ffmpeg,精简ffmpeg.exe的更多相关文章
- windows 下编译64位ffmpeg
window下如何编译ffmpeg 前文已有介绍,前面介绍的都是如何编译32位的库,本文主要介绍window 下如何编译64位ffmpeg库. 一.搭建编译环境 1.下载 windows下编译64位F ...
- Android APP使用NDK编译后的ffmpeg库出现undefined reference to 'posix_memalign'错误
在android程序中使用NDK编译后的ffmpeg库的时候出现了如下错误: jni/libs/libavutil.a(mem.o): in function av_malloc:libavutil/ ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- 为 Android 编译并集成 FFmpeg 的尝试与踩坑
前言与环境说明 随着 FFmpeg.NDK 与 Android Studio 的不断迭代,本文可能也会像我参考过的过期文章一样失效(很遗憾),但希望本文中提到的问题排查以及步骤说明能够帮到你,如果发现 ...
- Linux下源码安装ffmpeg及ffmpeg的简单使用说明
一.编译安装 ffmpeg在安装时依赖的包和版本都很让人头疼,不同编译环境也各不相同.公司之前封装了一个又各种出错. 其实办法很简单,就是到官网一步一步按着做就行了:http://trac.ffmpe ...
- (转载)[FFmpeg]使用ffmpeg从各种视频文件中直接截取视频图片
你曾想过从一个视频文件中提取图片吗?在Linux下就可以,在这个教程中我将使用ffmpeg来从视频中获取图片. 什么是ffmpeg?What is ffmpeg? ffmpeg是一个非常有用的命令行程 ...
- 反编译pyinstaller打包的exe安装包
PyInstaller将Python文件打包为exe后如何反编译(破解源码)以及防止反编译 在这里分享一些技巧和经验给大家.辛苦撰文分享,转载或引用请保留本文作者信息及文章链接. 作者的环境: win ...
- ffmpeg精简编译
项目上需要用到ffmpeg的接收功能,把rtp流转封装为ts吐udp组播流,不涉及编码,所以需要精简一下脚本如下: #!/bin/bash dir=$(pwd) echo $dir rm -rf $d ...
- 在windows XP系统下编译和使用ffmpeg
最近在做流媒体开发这一块,在服务器端,所用的live555不支持mp4,avi等视频容器格式,所以打算运用ffmpeg来进行扩展.将MP4文件先运用ffmpeg进行解析,解析成live555所支持的基 ...
随机推荐
- C# 中那些常用的工具类(Utility Class)(二)
今天按照这一年来经常用到的那些静态的工具类再来做一次总结,这些小的工具来可以作为自己学习的很好的例子,通过总结这些东西,能够很大程度上梳理自己的知识体系,当然这个是经常用到的,接下来就一个个去分析这些 ...
- 在ASP.NET程序中用程序动态向<head>便签里添加<meta>标签
在使用ASP.NET框架开发: 若要在Html网页中加入<meta>设置,但想通过程序动态加入: 1.如果是ASP.NET4.0以前版本: 使用HtmlMeta类加入<meta> ...
- table index & delete array item
table index & delete array item https://www.iviewui.com/components/table#ZDYLMB 编辑 row = { " ...
- qtp 自动化测试--点滴 自定义显示工具菜单 trzedit
tools-customize-toolbars-勾选后关闭 2 trzedit 使用winobject 方法取值 Window("驷惠WIN系列[汽车4S连锁管理软件] 6.") ...
- 十、ABP
一.官网 安装 安装成功Core 2.2版本的
- 【C/C++】c文件重点总结
c文件重点知识总结 程序文件数据文件--->分文本文件(ASCII文件)和映像文件(二进制文件) .区分是用记事本打开后能否看懂. 用二进制文件读写花费时间少,因为用文本文件需要有一个转换的过程 ...
- VM虚拟机截图方法介绍
可以先安装QQ之类的截图软件,但比较麻烦,而且截图之后还需要安装VMware Tools等工具才能拿到物理机上 先定向到物理机,快捷键为CTRL+ALT,之后在用qq截图快捷键ctrl+alt+a即可 ...
- BZOJ3894文理分科——最小割
题目描述 文理分科是一件很纠结的事情!(虽然看到这个题目的人肯定都没有纠 结过) 小P所在的班级要进行文理分科.他的班级可以用一个n*m的矩阵进行 描述,每个格子代表一个同学的座位.每位同学必须从 ...
- BZOJ4873[Shoi2017]寿司餐厅——最大权闭合子图
题目描述 Kiana最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序提供n种寿司,第i种寿司有一个 代号ai和美味度di,i,不同种类的寿司有可能使用相同的代号.每种寿司的份数都是无 ...
- PHP——base64的图片的另类上传方法
前言 这只是个暂行的办法,回头研究好七牛云的base64上传或者vue的文件上传后还是要进行更改的 想法是这样的,既然前端只能穿base64的那就传base64的然后转为文件上传到七牛云后再删除 本地 ...