嵌入式多媒体设计--6多媒体框架选择
这几天一直在收集资料,对于音频和视频的播放一直犹豫,不知道采用哪种方案好。
后来发现了QtAV,一个用Qt封装FFmpeg、PortAudio v19
的多媒体库。可惜作者没有告诉如何编译,让我折腾了两天,终于编译出来了。
由于时间原因有些步骤记不清了,大概没问题。
1、下载yasm,并编译
2、安装sdl sudo apt-get install libsdl-dev
3、下载ffmpeg1.2,使用./configure --enable-shared 配置,在make
4、下载portaduio ,并编译
5、下载QtAv ,可以另外新建目录存放二进制文件,比如qtavbin,
这时可以使用如下方式编译
cd qtavbin
qmake QtAV_source_dir/QtAV.pro
QtAV_source_dir
是你的QtAv源码的路径
make
最后会生成可执行文件和库。
由于我编译ffmpeg时没有添加--enable-shared,最后导致qtav编译失败
错误如下:
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32S against
`av_destruct_packet' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: could not read symbols: Bad value
开始在网上没找到,后来居然找到了,在stackoverflow,一个程序员问答网站,不错推荐。
原因是ffmpeg不是动态链接的,要加上--enable-shared。于是我立马开始编译ffmpeg,结果有出现了
/usr/bin/ld: libavutil/intfloat_readwrite.o: relocation R_X86_64_PC32 against undefined
symbol `ldexp@@GLIBC_2.2.5' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Bad value
collect2: ld returned 1 exit status
这次比较幸运,居然一下子就找到了答案,原来是现在产生的二进制文件与之前编译的二进制文件冲突,
只需要make distclean,再configure,make即可。
之后便是如何把QtAv用在我的工程中了,希望不要花费太多时间。
作者:半山
出处:http://www.cnblogs.com/xdao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。