FFmpeg 编译添加lame

1、环境和软件版本

ubantu-16.4.1

ndk-r14b

ffmpeg-4.0.2

lame_mp3-3.99.5

2、废话

    因为我也是新手,对linux不熟悉,对编译不熟悉,最喜欢的动作就是拿来主义,研究不深,所以不敢保证本文所有的操作都是一步到位没有问题,再者,即使跑不通,也可以给大家提供个思路。

    根据我上一篇博客(https://my.oschina.net/u/1462828/blog/1860847)的编译步骤,已经可以编译出来Android平台运行的so文件了,但是还存在的问题就是,因为版权问题,所以ffmpeg是不包含MP3的编码器的,所以我们只能是自己再编译一个lamemp3到ffmpeg里面。

    我们可以先尝试编译一个ubantu下可以直接运行的ffmpeg带MP3的,很简单。首先安装lamemp3(ubantu命令:sudo apt-get install libmp3lame-dev),然后下载ffmpeg源码并解压,然后cd到源码目录,运行ubantu命令三部曲:

    1:./configure --enable-libmp3lame

    2:make

    3:make install

    完了之后可以直接运行ffmpeg -version,就可以看到ffmpeg的版本信息了,然后再找个音乐,测试一下命令:ffmpeg -i 1.wav 2.mp3

    命令如果运行成功,成功的生成了2.MP3,那就证明MP3编码器已经集成成功了。

    然后,就这么简单?

    显然,不可能这么简单,如果这么简单的话,我也不用专门写个帖子了。

    我用上一篇博客编译的脚本,加上了--enable-libmp3lame 这一句,然后运行编译,一直在报错:

 

    找到ffbuild/config.log之后,天书……不懂的情况下生啃日志,总是一件让人感到秃顶的事情……

    最后字里行间,找到了一些蛛丝马迹:

    

    于是乎,初步怀疑是ffmpeg没有定位到安装的lameMP3目录的原因,于是乎各种百度,找到的都是“apt-get install libmp3lame-dev”这句,很显然这样是不行的,至于原因后面会说。

    之后,各种骚操作都来了一波,外加中间绝望得放下了键盘,拿起手机打了几把吃鸡游戏。

    脑子清醒了之后再来,终于定位到了问题的关键所在:

    

    -cflags是要定位到include目录,前面加-I(大写i),ldflags是要定位到lib目录,前面加-L

    

    理论上是这样,但是我换了七七四四九种打开的方式和九九八十一个运行命令的姿势,均换回来了一句冷冰冰的:

    ERROR: libmp3lame >= 3.98.3 not found

    无奈,网上的帖子也基本上都是h264+aac的,搞直播的那帮人都不用mp3了,于是只能是找了个ffmpeg的群,群里也不是很活跃,索性还是有大神常驻的,大神虽然没有提供到最直接的帮助,但是也给了一个思路,就是用用ndk编译lamemp3。

    意思是,既然用的ndk编译ffmpeg,是不是需要导入的lame也是需要用ndk来编译。

    说刚就刚……但是,这个怎么用ndk编译lamemp3?直接套用ffmpeg的那个脚本好像也不行,路径上都没有crpss-prefix等标签。

    那就百度吧,没办法的事情,找了好久也没有头绪,后来灵光一闪,ffmpeg+h264+aac不也是一样的道理么?于是乎找了一个帖子,然后把编译aac的脚本搞了下来,魔改了一番,经过了七七四十九种打开方式和九九八十一个不同姿势,终于编译成功了。

    然后在改了一下ffmpeg的-cflags标签,心中无限的憧憬和希望,感觉世界充满了友爱与和谐,唯独比较刺眼的就是那句红色的,冷冰冰的代码:

    

    ……

    再检查了一下过程,原来是cflags、ldflags的路径少了一层,虚惊一场。

    编译完成后,拷贝so包出来,米6真机测试,没问题。

    果然,世界还是友爱的,和谐的。

3、编译过程

1、源码下载

    lamemp3:http://lame.sourceforge.net/download.php

    ffmpeg:http://ffmpeg.org/

    ndk:https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip 

    切记在ubantu环境下下载,我这边的软件解压目录为:

    lamemp3:    /home/xiaoyu/lame-3.99.5

    ndk:    /home/xiaoyu/ndk

    ffmpeg:    /home/xiaoyu/ffmpeg/ffmpeg-4.2.0/

    还是忍不住吐槽一下lame的版本命名,最新版本是3.100,上一版是3.99.5,然后ffmpeg支持的是3.98.3以上的。最开始的时候安装和下载的是3.100,显示已经是最新版本了,这个最新版本是3.1为何ffmpeg那边是要3.9,后来网上找了一下,下载了个3.99.5的,现在回过头一看,这他妈,哪门子3.1,分明是三点一百……

2、编译lamemp3

    下载,解压,略……

    然后是执行编译的脚本build.sh

 

    cd到lame-3.99.5目录

    chmod +x build.sh

    ./build.sh

    make  

    make install

    编译完成后,会在lame-3.99.5目录下看到一个android/armv7-a的目录

    

    里面就是我们需要的东西。

2、编译ffmpeg

    build.sh脚本与上一篇博客的基本一致,只是加上了一句--enbale-libmp3lame 和修改了cflags、ldfags标签

 

    老规矩,cd到ffmpeg-4.0.2目录

    chmod +x build.sh

    ./build.sh

    make

    make install

    完成之后会在ffmpeg-4.0.2目录下找到一个android/armv7-a目录

    

    到这里,就大功告成了,自己动手吧,编译好的我就不发出来了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
编译和安装FFmpeg,您可以按照以下步骤进行操作: 1. 安装编译依赖项:首先,确保您的系统上安装了必要的编译依赖项。这些依赖项可能因操作系统而异,一般包括以下内容: - GNU Make - GCC编译器 - yasm汇编器 - pkg-config工具 - zlib和libssl开发库(如果您需要HTTPS支持) - 其他可能需要的依赖项(例如libx264、libx265、libvpx等) 2. 下载FFmpeg源代码:访问FFmpeg官方网站(https://www.ffmpeg.org/)或从Git仓库(https://github.com/FFmpeg/FFmpeg)下载最新的稳定版本的源代码。 3. 解压源代码:将下载的源代码文件解压到您选择的目录。 4. 进入源代码目录:使用终端进入解压后的源代码目录。 5. 配置编译选项:运行以下命令来配置编译选项: ```shell ./configure --prefix=/usr/local --enable-shared --enable-gpl --enable-libx264 --enable-libx265 --enable-libvpx --enable-libmp3lame ``` 这个示例命令启用了一些常用的选项,如共享库支持,GPL许可证支持以及libx264、libx265和libvpx等常用编解码器的支持。您可以根据自己的需求进行调整。 6. 编译和安装:运行以下命令来编译和安装FFmpeg: ```shell make sudo make install ``` 这将编译源代码并将生成的可执行文件安装到系统。 7. 验证安装:完成安装后,您可以通过运行`ffmpeg -version`命令来验证FFmpeg是否成功安装,并查看版本信息。 请注意,这只是一个基本的FFmpeg编译和安装过程示例,具体步骤和选项可能因您的操作系统和需求而有所不同。请参考FFmpeg官方文档以获取更详细的指导和其他编译选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值