• 音视频技术应用(3)Linux编译x264,x265,fdkaac, ffmpeg 测试并运行


    本文测试的环境为 ubuntu18.06, 下载地址:http://mirrors.aliyun.com/ubuntu-releases/18.04/ubuntu-18.04.6-desktop-amd64.iso

    1. 安装可能用到的工具链

    打开终端,执行下列指令,安装所有用到的工具链:

    sudo -i apt-get install make cmake g++ nasm yasm diffutils pkg-config -y

    -y 表示不必每次询问,每次都是yes

    2. 编译x264

    首先下载x264的源码:

    链接: https://pan.baidu.com/s/116ctuWFJcOUdBPSdujST8g 提取码: 5eug 

    下载完成后解压,然后 cd 到 x264的当前目录下打开终端,执行下列指令:
    执行配置项:
    ./configure --enable-shared --prefix=/usr

    执行make -j16

    安装到usr 目录下,之所以安装到usr目录下是因为linux的系统环境变量默认已经支持该路径。

    执行make install

    可以看到x264已经顺利安装到/usr目录下,这样x264就编译好了。

    3. 编译x265

    接下来编译x265,首先下载x265的源码:

    链接: https://pan.baidu.com/s/1PjQD_ZOri_HSVY9pcRLgQg 提取码: i3a2 

    下载完毕后解压,然后定位到x265的build/linux目录:

    可以看到x265提供了一个名为make-Makefiles.bash 的文件用于自动生成Makefile, 下面执行该文件生成Makefile:

    执行:./make-Makefiles.bash

    执行完毕后发现当前目录下已经可以生成了Makefile文件:

    PS: 若编译时提示:

    需要安装cmake-curses-gui:

    然后在运行上面的 ./make-Makefiles.bash 脚本,就没得问题了, 最后就是 make:

    make-j16

    make install

    这样x265就编译完了。

    4. 编译fdk-aac

    首先下载fdk-aac的源码文件:

    链接: https://pan.baidu.com/s/1HYj8gkLBDhd4N8FKgi9Tiw 提取码: nskj

    下载完成后解压,然后定位到fdk-aac的根目录:‘

    执行./autogen.sh, 以生成configure文件:

    若提示 autoreconf not found, 则需要安装automake 工具,使用下列指令安装这些工具:

    apt-get install autoconf automake libtool -y

    再次执行./autogen.sh 就不会报错了:

    同时也得到了configure文件:

    下面更新一下配置项:

    ./configure --enable-shared -prefix=/usr

    make -j16

    make install

    这样fdk-aac就编译好了。

    5. 编译ffmpeg

    首先下载ffmpeg的源码:
    链接: https://pan.baidu.com/s/16AZP8wxHiDgY3jyQ8GhWfQ 提取码: 3sjv 

    下载完成后解压,并定位到ffmpeg的当前目录:

    配置configure 文件,生成makefile

    ./configure --enable-shared --prefix=/usr  --disable-programs --disable-ffplay --disable-ffmpeg --disable-ffprobe --enable-libx264 --enable-gpl --enable-libfdk-aac --enable-nonfree --enable-libx265

    make -j16

    make install

    这样ffmpeg就编译好了。

    6. 测试ffmpeg是否能在linux环境下正常运行

    将先前在windows环境编译好的first_ffmpeg项目拷贝到linux环境下:

    我们为这个项目编写一个简单的makefile 用于编译 first_ffmpeg.cpp

    first_ffmpeg:first_ffmpeg.cpp
        g++ $^ -o $@ -lavcodec
    first_ffmpeg:first_ffmpeg.cpp   // 冒号后面代表的是依赖项
    $^
                      // 表示提取依赖项
    $@                  // 表示编译的目标项,这里就是first_ffmpeg.

    执行make 指令,并且执行./first_ffmpeg, 如果能够看到下列log信息,则说明ffmpeg 已经可以正常编译并运行了,。

    PS:  如果提示x265 库找不到,则执行:cp /usr/local/lib/libx265.x /usr/lib  将x265的库由/usr/local目录拷贝到/usr/lib目录下。x265当前默认编译在usr/local/lib目录下。

    <完>

  • 相关阅读:
    解决vmware Invalid memory setting (sched.mem.min)
    PostgreSQL教程
    rpm包安装过程中依赖问题“libc.so.6 is needed by XXX”解决方法
    使用厂商MIB库查找设备OID值 并实施监控的方法
    【交换机】我司交换机上常用的一些MIB以及对应的OID说明
    CentOS6.8-minimal安装gnome桌面 安装NVC远程桌面连接
    LINUX新建和增加SWAP分区
    Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWo
    类与对象
    Volley框架源代码分析
  • 原文地址:https://www.cnblogs.com/yongdaimi/p/15526838.html
Copyright © 2020-2023  润新知