嵌入式多媒体设计--6多媒体框架选择

这几天一直在收集资料,对于音频和视频的播放一直犹豫,不知道采用哪种方案好。

后来发现了QtAV,一个用Qt封装FFmpegPortAudio 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用在我的工程中了,希望不要花费太多时间。





posted @ 2013-03-27 18:04  半山th  阅读(844)  评论(0编辑  收藏  举报