Linux下FFmpeg之ffplay编译

一、搭建环境

       Win10 + VMware15 + Ubuntu16.04(64位)

       Ubuntu中源码路径:/home/llh/ffmpeg/source

       Ubuntu中构建路径:/home/llh/ffmpeg/build

       相关下载链接:https://pan.baidu.com/s/1YClANYKHWMI6KyF7EQTYqg,提取码:dnn7

二、安装 SDL

     1) SDL 库需要安装一些依赖库,不然运行时会出现异常(比如说找不到设备,没有声音等)。

sudo apt-get install libx11-dev
sudo apt-get install xorg-dev

sudo apt-get install libsdl2-image-dev
sudo apt-get install libsdl2-mixer-dev
sudo apt-get install libsdl2-ttf-dev
sudo apt-get install libsdl2-gfx-dev

    2)配置 

./configure --prefix=/home/llh/ffmpeg/build/

3)编译 

make

4)安装 

make install

三、安装 FFmpeg

       1)配置

./configure --prefix=/home/llh/ffmpeg/build/

解决办法如下:

       方法一:安装yasm ,命令:

sudo apt-get install yasm

       方法二:在配置命令后面加上 –disable-yasm

当前我选择安装yasm ,重新配置如下(注:此图我只是截取一些部分进行说明)

 

上图可以看出 shared 的选项是 no ,说明当前配置不能编译出动态库,而我们经常需要用到动态库,所以需要在配置命令后面加上 –enable-shared 。还有就是当前并没有加载到 SDL 的库,那么我们需要做如下操作:

      1.1)在命令行终端设置 PKG_CONFIG_PATH变量,指定 SDL 编译生成的 pkgconfig 文件路径

export PKG_CONFIG_PATH=/home/llh/ffmpeg/build/lib/pkgconfig:$PKG_CONFIG_PATH

      1.2)使用 --extra-cflags 和 --extra-ldflags 指定编译生成的 SDL 库路径以及头文件路径,具体使用如下:

./configure --prefix=/home/llh/ffmpeg/build/ --enable-shared --extra-cflags=-I/home/llh/ffmpeg/build/include --extra-ldflags=-L/home/llh/ffmpeg/build/lib --enable-gpl


 

       2)编译

make

       3)安装

make install

四、测试

     1)查看 FFmpeg 版本

     2)测试 ffplay 播放 MP4 

当前 ffplay 是可以正常播放的,完成。

五、问题记录

     1)问题一
        Could not initialize SDL - No available video device
        (Did you set the DISPLAY variable?) 

     2)问题二

        Could not initialize SDL - Audio target 'pulse' not available
        (Did you set the DISPLAY variable?)

     3)解决办法      ----》也许还需要安装以下一些依赖库,安装依赖库之后需要重新编译安装 SDL,以及重新编译安装 FFmpeg

sudo apt-get install libpulse-dev
sudo apt-get install libasound2
sudo apt-get install libasound2-dev

sudo apt-get install libva-dev 
sudo apt-get install libvdpau-dev 
sudo apt-get install libxcb1-dev 
sudo apt-get install libxcb-shm0-dev 
sudo apt-get install libxcb-xfixes0-dev

六、注意

      1)当前采用的是 SDL 源码包形式编译安装,这样的好处就是可以自己指定路径安装,那么这样在编译 FFmpeg 时就必须指定 SDL 安装的路径,否则无法生成 ffplay,切记!

      2)安装 SDL 的另外一种方式是直接在终端输入安装命令:sudo apt-get install libsdl2-dev,当前这个是 SDL2-2.0.4 版本的,这个版本是可以得到 ffplay的。以前旧版 FFmpeg 使用的是 SDL-1.2 版本的,新版 FFmpeg 使用的是 SDL2 版本的,但是本人开始使用的是 FFmpeg-3.3.9 版本 + SDL2-2.0.0 版本,怎么操作都无法编译出 ffplay,后来改用 FFmpeg-3.3.9 版本 + SDL2-2.0.12 版本,也就是本次测试使用的版本。

      3)为了以后使用方便,可以将生成的动态库路径 以及 可执行程序路径设置为相应环境变量,在 /etc/profile 或者 /etc/bash.bashrc 最后加入以下内容,之后重新加载脚本即可:

export PATH=/home/llh/ffmpeg/build/bin:$PATH
export LD_LIBRARY_PATH=/home/llh/ffmpeg/build/lib:$LD_LIBRARY_PATH
export C_INCLUDE_PATH=/home/llh/ffmpeg/build/include:$C_INCLUDE_PATH

猜你喜欢

转载自blog.csdn.net/qq_32588939/article/details/105221586