zoukankan      html  css  js  c++  java
  • Linux编译ffmpeg

    Linux编译ffmpeg并转换MP3到AMR

    AMR格式是智能手机上的常用音频文件格式,比如MP3格式的压缩比大,但是文件比MP3小,所以在移动互联项目中应用比较广泛。去年年底协助联想研究院开发一款预装产品过程中需要使用到MP3格式和AMR格式的互相转换,服务器环境为CentOS 6.0,过程如下。

    1. 首先安装系统基础环境

    RHEL & CentOS 系列:yum install -y automake autoconf libtool gcc gcc-c++

    Debian & Ubuntu 系列:apt-get install automake autoconf libtool gcc gcc-c++

    2. 下载最新的FFMpeg源码包

    FFMpeg官方下载地址:http://ffmpeg.org/download.html

    一般直接使用最新版本,下载完成后解压缩,进入源码文件夹,运行“./configure --help”查看帮助,这里主要是为了确认需要安装的扩展,有些扩展默认是已经开启的,有些是需要单独下载扩展源码包进行编译的。以我的需求为例,需要单独编译yasm、lame、OenCore AMR、AmrNB和AmrWB,其中lame是MP3解码器。

    3. 编译所需源码包

    从各个官方地址下载上述五种源码包,为了保证兼容最新版本的ffmpeg,请务必也下载最新版本的源码:

    yasmhttp://yasm.tortall.net/Download.html

    lamehttp://lame.sourceforge.net/download.php

    OenCore AMRhttp://sourceforge.net/projects/opencore-amr

    AmrNB & AmrWBhttp://www.penguin.cz/~utx/amr

    分别解压缩并编译上述源码包,直接使用“./configure && make && make install”即可。

    4. 编译FFMpef

    回到刚才的FFMpeg源码目录,打开所需扩展并且编译FFMpeg:

    ./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared

    make && make install

    ldconfig

    最后写入config后,终端运行ffmpeg命令,出现success和已安装的扩展,则运行成功。

    5. 可能遇到的问题

    ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,解决办法是建立软链接或者移动库文件到相应的目录:

    ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

    mv /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0

    6. 使用方法

    MP3转换AMR: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr

    AMR转换MP3: ffmpeg -i 1.amr 1.mp3

    其他需求使用方法参考帮助,其中-i意味输入,ac和ar代表音频的码率和赫兹这些概念,使用之前请咨询客户端开发工程师。

    目前可以总结的暂时只有这么多,如有问题,请提问。下面之前我编译的一个完整源码包和自动编译安装的shell脚本:

    #!/bin/sh
    echo "--------------------------"
    echo "Start Installing..."
    echo "--------------------------"
      
    echo "--------------------------"
    echo "0. Tar Packages..."
    echo "--------------------------"
    for i in *.tar.gz; do tar -xzvf "$i"; done
    for i in *.tar.bz2; do tar -xjvf "$i"; done
      
    echo "--------------------------"
    echo "1. Install yasm..."
    echo "--------------------------"
    cd yasm-1.2.0
    ./configure && make && make install
    cd ..
      
    echo "--------------------------"
    echo "2. Install lame..."
    echo "--------------------------"
    cd lame-3.99.4
    ./configure && make && make install
    cd ..
      
    echo "--------------------------"
    echo "3. Install OenCore AMR..."
    echo "--------------------------"
    cd opencore-amr-0.1.3
    ./configure && make && make install
    cd ..
      
    echo "--------------------------"
    echo "4. Install AmrNB..."
    echo "--------------------------"
    cd amrnb-10.0.0.0
    ./configure && make && make install
    cd ..
      
    echo "--------------------------"
    echo "5. Install AmrWB..."
    echo "--------------------------"
    cd amrwb-10.0.0.0
    ./configure && make && make install
    cd ..
      
    echo "--------------------------"
    echo "Finnal. Install FFMpeg..."
    echo "--------------------------"
    cd ffmpeg-0.10
    ./configure --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-version3 --enable-shared
    make && make install
    ldconfig
    cd ..
      
    echo "--------------------------"
    echo "FFMpeg Install Successful"
    echo "Example:: ffmpeg -i 1.mp3 -ac 1 -ar 8000 1.amr"
    echo "Enjoy it......"
    echo "--------------------------"
  • 相关阅读:
    关于在unity中动态获取字符串后在InputField上进行判断的BUG
    关于在将暴风SDK倒入unity中运行程序出现报错问题
    关于用暴风SDK在unity中加入VR效果和利用暴风手柄进行操作
    IDEA 接口无法跳转到实现类
    springboot项目中获取pom中的属性
    mybatisplus异常: 栏位索引超过许可范围:2,栏位数:1。
    七日杀windows服务器搭建
    SQL子查询报错syntax error at end of input
    关于在将excel数据导入到pgsql数据库的时候中文变成问号的处理方式
    字符串补位操作
  • 原文地址:https://www.cnblogs.com/diyunpeng/p/6707050.html
Copyright © 2011-2022 走看看