最近须要对VP9的编解码进行学习分析。因而下载了ffmpeg 2.2 , 一下是我编译ffmpeg的问题和解决方法。php
./configure --disable-optimizations --enable-debug make -j16 make install
发现本身编译出来的文件中没有ffplay , 感受应该是ffplay 的一些库,系统里面没有装好,但急于看到ffmpeg 对VP9解码的效果,先不顾这些了。因而,我先直接下载安装了一个ffplay
html
sudo apt-get install ffplay ffplay -version
查看版本,发现这个ffplay 是来自 libav 的(ffmpeg 出走的一个团队),因为版本问题,这个ffplay 没有支持HEVC 和 VP9 解码
web
因而我使用ffmpeg 解码成yuv文件
ubuntu
ffmepg -i xxx.webm xxxx.yuv
而后再使用ffplay播放yuv文件ide
ffplay -f rawvideo -video_size 1920x1080 xxxx.yuv
没有从本身下载的版本中编译出ffplay,接下来继续搞定:学习
首先网上查找了一下缘由,应该是SDL 库没有,致使在configure 的时候,没有支持 ffplay
测试
也就是说:
优化
config.mak
spa
!CONFIG_FFPLAY = yes (注意前面有 !)
debug
接下来本人安装了SDL 2.2 从新configure以后发现打印
SDL support no
而后在装上SDL 1.2 以后, 再次configure以后出现打印
SDL support yes
gedit config.mak
能够看到
CONFIG_FFPLAY = yes (前面已经没有 !)
看来我下载的ffmpeg 版本须要SDL 1.2 的接口
接下来 从新make 一下,就有 ffplay出现了
ffplay xxx.webm
这是我在网上参考的说法:
/////////////////////////////////////////////////////////////////////////////////////////
一、安装SDL库,不安装将没有ffplay;
二、若是安装的是SDL2.0最新版本,建议从新编译安装SDL1.x版本(我测试的时候使用SDL2未生成ffplay,此项我再验证);
听群里的高手说,SDL2.0与1.x的版本对比,变更很大,不少接口有调整,强制使用的话要修改源码。
三、肯定不是1和2的问题后,在ffmpeg目录下执行./configure ******以后查看Makefile中指定的config.mak(在ffmpeg根目录下)中:CONFIG_FFPLAY=yes,若是不是须要从新./configure(若是前面总有!,重装SDL)
ps:
一、若是本身去下载SDL源码而后make install安装的库,编译ffmpeg能够产生ffplay,可是产生的ffplay播放视频没有声音。并且不能播音频,这个时候须要安装一些其余的库文件;
编译sdl 1.的时候,把 makefile 中CFLAGS变量的-O2优化选项去掉,从新生成sdl的lib库便可解决问题
运行ffplay时,有些机器上会出现
Could not initialize SDL - No available video device
(Did you set the DISPLAY variable?)
说明系统中没有安装x11的库文件,所以编译出来的SDL库实际上不能用。
下载安装
sudo apt-get install libx11-dev sudo apt-get install xorg-dev
从新编译sdl
再次进入sdl源代码目录从新编译,make clean,./configure,make,make install
ffplay xxxx.webm
解码显示正确~
本人在 ubuntu kylin 14.04 上出现了新的问题 SDL1.2的代码中于系统的/usr/x11/Xlibint.h 出现来命名冲突,因而还须要注释掉SDL中的代码 src/video/SDL_x11sym.h line 168 附件的两行代码:
#ifdef LONG64 SDL_X11_MODULE(IO_32BIT) //SDL_X11_SYM(int,_XData32,(Display *dpy,register long *data,unsigned len),(dpy,data,len),return) //SDL_X11_SYM(void,_XRead32,(Display *dpy,register long *data,long len),(dpy,data,len),) #endif从新对SDL 进行configure, make, make install
问题修复成功!