在ubuntu16.04下测试ffplay程序

下载FFmpeg及SDL源码

离上次博文发布已经有一段时间了,这次我们来测试一下强大的FFmpeg播放器程序ffplay,它是FFmpeg原生附带的。
本文编写时,FFmpeg的最新版本是3.4.2,从官网ffmpeg.org上下载ffmpeg-3.4.2.tar.xz源码,通过如下命令解压:

tar xvf ffmpeg-3.4.2.tar.xz

ffplay.c的源码在fftools目录下,我们知道,早期的ffplay版本是基于SDL1.x实现的音视频显示和播放,而现在的ffplay则是基于SDL2.x实现的,因此我们需要到SDL官网(http://www.libsdl.org/)下载,本文编写时的版本是SDL version 2.0.7 (stable),下载并解压缩:

tar xzvf SDL2-2.0.7.tar.gz

编译SDL

要使能ffplay编译,需要Ubuntu系统中支持SDL功能,所以我们首先需要下载SDL的源代码。进入对应目录,配置并编译,安装:

cd SDL2-2.0.7
./configure
make
sudo make install

将完成代码编译和库及头文件安装。

编译ffplay

必须在正确安装SDL库和头文件后,编译FFmpeg源码时,才会自动配置ffplay编译使能,否则在最终的编译结果中,没有ffplay可执行文件产生,这点一定要注意。
在编译FFmpeg源码的时候,默认会编译出ffplay :

tar xvf ffmpeg-3.4.2.tar.xz
cd ffmpeg-3.4.2
./configure --prefix=ffout
make
make install

为了方便的获取编译结果,指定库和头文件的安装路径为ffout(在FFmpeg源码根目录下)。如果在configure过程中遇到nasm/yasm之类的错误,则首先需要更新对应的包:

sudo apt-get install yasm

最后,在ffout/lib目录下是FFmpeg几大库的位置,默认都编译成了.a的静态库,ffout/include是FFmpeg对应的API头文件,而ffplay程序则位于ffout/bin目录下,同时存在的还有ffmpeg,ffprobe,ffserver等几个程序。

测试ffplay

可以通过ffplay程序来测试播放本地影片,比如:

./ffout/bin/ffplay test.avi

顺利的话,可以看到影片的音视频正常播放。
如果遇到如下打印,表示SDL的图形层没有正常加载成功:

ffmpeg@ubuntu:~/work/ffmpeg-3.4.2$ ./ffout/bin/ffplay ../4k.mp4 
ffplay version 3.4.2 Copyright (c) 2003-2018 the FFmpeg developers
  built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
  configuration: --prefix=ffout
  libavutil      55. 78.100 / 55. 78.100
  libavcodec     57.107.100 / 57.107.100
  libavformat    57. 83.100 / 57. 83.100
  libavdevice    57. 10.100 / 57. 10.100
  libavfilter     6.107.100 /  6.107.100
  libswscale      4.  8.100 /  4.  8.100
  libswresample   2.  9.100 /  2.  9.100
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)

而SDL图层一般依赖于x11图形系统,所以需要安装对应的包:

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

安装x11后,需要重新编译和安装SDL,最好是用源代码重新解压缩编译。
如果遇到播放没有声音,需要系统安装对应的音频设备包:

sudo apt-get install libasound-dev
sudo apt-get install libasound2-dev

同样的,完毕后需要彻底重新编译安装SDL。

下面是播放的视频截图:
ffplay播放截图

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值