ffmpeg编译问题总结

编译ffmpeg的问题

最近需要对VP9的编解码进行学习分析。于是下载了ffmpeg 2.2 , 一下是我编译ffmpeg的问题和解决方法。

1. configure 的配置问题

./configure --disable-optimizations --enable-debug

make -j16

make install

发现自己编译出来的文件中没有ffplay , 感觉应该是ffplay 的一些库,系统里面没有装好,但急于看到ffmpeg 对VP9解码的效果,先不顾这些了。于是,我先直接下载安装了一个ffplay

sudo apt-get install ffplay 

ffplay -version  

查看版本,发现这个ffplay 是来自 libav 的(ffmpeg 出走的一个团队),由于版本问题,这个ffplay 没有支持HEVC 和 VP9 解码

于是我使用ffmpeg 解码成yuv文件

ffmepg -i  xxx.webm  xxxx.yuv

然后再使用ffplay播放yuv文件

ffplay  -f rawvideo -video_size 1920x1080 xxxx.yuv

2. ffmpeg 编译之后没有 ffplay

没有从自己下载的版本中编译出ffplay,接下来继续搞定:

首先网上查找了一下原因,应该是SDL 库没有,导致在configure 的时候,没有支持 ffplay

也就是说:

config.mak

!CONFIG_FFPLAY = yes (注意前面有 !)

接下来本人安装了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

这是我在网上参考的说法:

/

1、安装SDL库,不安装将没有ffplay;

2、如果安装的是SDL2.0最新版本,建议重新编译安装SDL1.x版本(我测试的时候使用SDL2未生成ffplay,此项我再验证);

听群里的高手说,SDL2.0与1.x的版本对比,变动很大,很多接口有调整,强制使用的话要修改源码。

3、确定不是1和2的问题后,在ffmpeg目录下执行./configure ******之后查看Makefile中指定的config.mak(在ffmpeg根目录下)中:CONFIG_FFPLAY=yes,如果不是需要重新./configure(如果前面总有!,重装SDL)

ps:

1、如果自己去下载SDL源码然后make install安装的库,编译ffmpeg可以产生ffplay,但是产生的ffplay播放视频没有声音。而且不能播音频,这个时候需要安装一些其他的库文件;

2、ffplay.exe无法正常播放视频有可能是sdl的bug, 也有可能是gcc的bug。

编译sdl 1.的时候,把 makefile 中CFLAGS变量的-O2优化选项去掉,重新生成sdl的lib库即可解决问题


3.SDL库不能正确执行

运行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

问题修复成功!







  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
交叉编译FFmpeg是指在一台计算机上为另一种不同系统或架构编译FFmpeg库。这种方法通常用于为嵌入式设备或其他特定平台生成可执行文件。引用提供了在Windows下编译FFmpeg的详细步骤,而引用则介绍了如何使用VS2019编译带有libx264和libmp3lame的FFmpeg库。具体步骤如下: 1. 下载FFmpeg源代码:可以通过引用提供的GitHub仓库链接下载FFmpeg源代码。 2. 配置交叉编译环境:根据目标平台的不同,需要配置相应的交叉编译环境。这涉及到安装交叉编译工具链、设置环境变量等。 3. 配置FFmpeg编译选项:根据需要,可以通过修改配置文件或使用命令行参数来配置编译选项。例如,可以指定需要编译的模块、库等。 4. 执行编译命令:使用命令行工具进入FFmpeg源代码目录,执行编译命令进行交叉编译。具体的编译命令可以参考引用和引用中的示例。 需要注意的是,交叉编译FFmpeg可能存在一些特定的问题和挑战,例如平台差异、依赖库的配置等。因此,在进行交叉编译之前,建议仔细阅读相关文档和参考资料,并根据具体情况进行相应的调整和配置。 总结起来,交叉编译FFmpeg涉及下载源代码、配置交叉编译环境、配置编译选项以及执行编译命令等步骤。具体的步骤和细节可以根据目标平台和需求进行调整。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值