0
点赞
收藏
分享

微信扫一扫

石头的实习之路1——Windows下的FFmpeg按需编译

程序员知识圈 2022-03-31 阅读 74
windows

昨天突然接到部门前辈的需求,原版FFmpeg过大,对于项目来说太大,只需要用到pcm转mp3。需要我对FFmepg裁剪至合适大小。

接到需求一脸懵,完全对FFmpeg没了解。但是还是硬着头皮上,特此记录一下。

以下涉及到的是石头浅见,各位前辈还请多多指导。

首先就是编译环境的搭建,小弟参考的是这篇文章,前辈讲的很详细:

按照步骤搭建好编译环境后,打开C:\MinGW\msys\1.0\msys.bat,进入FFmpeg目录,输入以下命令查看FFmpeg的详细信息。

./configure --help #查看详细信息

./configure --list-encoders #查看所有编码器

./configure --list-decoders #查看所有解码器

例:
--disable-decoders #禁用所有解码器
--enable-decoder=pcm_s16be #打开指定解码器

./configure --prefix=/buildout  #指定编译目录

  

 参考其他前辈的思路,先禁用所有的,再打开需要的。

配置完成之后make         再make install

配置过程中可能遇到的错误

1.ERROR: 1ibnp31ame >= 3.98.3 not found

没有找到第三方库lame,如果你没有下载lame库而配置的时候enable-libmp3lame的话就会报错

如果你需要mp3的编码,请下载第三方库lame

下载链接:https://sourceforge.net/projects/lame/files/

下载后打开C:\MinGW\msys\1.0,进入刚刚下载的lame目录,配置、生成老一套:

./configure --prefix=/shared --enable-shared --enable-static #配置完成后
make #结束后
make install

#也可以这么写,执行完了自动执行下一个
./configure --prefix=/shared --enable-shared --enable-static && make && make install

lame 的make过程中可能还会遇到错误!!!折磨!

ERROR:langinfo.h: No such file or directory

参考官方两篇文档:

https://sourceforge.net/p/lame/svn/6416/#diff-1

https://sourceforge.net/p/lame/svn/6410/

修改lame-3.100\frontend.parse.c和configure.in两个文件

示例:

修改完成后make && make install就可以通过了

接下来开始编译FFmpeg

./configure
--prefix=/shared #指定编译生成的文件目录,如果是./shared就是在mysys/1.0目录下的shared文件夹
                #如果是/shared就是在ffmpeg目录下的 shared文件夹
--enable static #生成静态文件 .exe文件
--disable shared #禁止生成动态文件 .dll文件(动态链接库)
--enable libmp3lame #导入第三方库
--disable-ffplay #禁止生成ffpaly.exe
#因为我只用得到音频格式转码,只需要用到ffmpeg.exe

换行快捷键 \+回车

make        make install 后就可以在你指定的目录里看到生成的静态文件ffpmeg.exe

如果没有指定目录生成的静态文件应该是在ffmpeg的根目录下,仔细找一找

FFmpeg验证

在文件地址栏上直接cmd,输入一段音频转码的代码:回车

 

如果没有意外情况的话,会看到你新生成的文件,如果出现以下错误

意思是没有MP3的编码器,你可能禁用了MP3的编码器,无法转换格式。一种情况是你的第三方库libmp3lame没有加入ffmpeg,也有可能是你的配置写的不正确,可能disable-encoders禁用了所有编码器,输入ffmpeg -codecs查看支持的编码,D代表支持解码,E代表支持解码。

 如果出现这个错误

 

 

在windows系统目录C:\Windows\System32下找到该文件复制到ffmepg.exe目录下运行即可。

最后

参考了这几篇文章,一步一步走到这里。第一次写博客,只是记录下自己的踩坑历程,对FFmpeg的编译只是一点皮毛,有不对的地方各位前辈多多指教。编译lame-3.100,报错:langinfo.h: No such file or directory

ffmpeg支持MP3编码的方法

编译:ffmpeg,精简ffmpeg.exe

FFmpeg编译以及遇到的问题_Windows平台

举报

相关推荐

0 条评论