让qtwebkit使用gstreamer


分类:
C/C++编程
Linux编程


742人阅读
评论(3)
收藏
举报

花了一天事件, 终于编译出了支持gstreamer的qtwebkit, 可以开始html5的<video><audio>之旅了。

1. 编译libxml2

下载libxml2-sources-2.7.6.tar.gz

解包后在当前目录下编写如下编译脚本:(当然,不用脚本也行,你可以直接执行)

[html] view plaincopyprint?

  1. CC=arm-none-linux-gnueabi-gcc./configure--build=i686-linux--host=arm-none-linux--prefix=/home/work/dist--without-python
  2. make&&makeinstall

2. 编译zlib, 这个太common,我不啰嗦了, glib-2.0要依赖的。

3. 编译glib-2.0

下载glib-2.24.2.tar.bz2, 解包, 这个版本的依赖库很少, 竟然只需要zlib。

老版本需要的libconv, gettext等均不需要了。

同样, 编写编译脚本:

[html] view plaincopyprint?

  1. CC=arm-none-linux-gnueabi-gcc./configure--build=i686-linux--host=arm-none-linux\
  2. --prefix=/home/work/dist\
  3. CFLAGS="-I/home/work/dist/include-L/home/work/dist/lib"\
  4. glib_cv_stack_grows=noglib_cv_uscore=noac_cv_func_posix_getpwuid_r=yes\
  5. ac_cv_func_posix_getgrgid_r=yesac_cv_lib_rt_clock_gettime=noglib_cv_monotonic_clock=yes
  6. make&&makeinstall

4. 编译gstreamer

下载gstreamer-0.10.35.tar.gz, 这个是0.10版本里面最新的了。

编译脚本:

[html] view plaincopyprint?

  1. CC=arm-none-linux-gnueabi-gccPKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig./configure--build=i686-linux--host=arm-none-linux\
  2. --prefix=/home/work/distCFLAGS=-I/home/work/dist/include--disable-registry--disable-loadsave--disable-gtk-doc\
  3. ac_cv_func_register_printf_function=no--disable-tests--disable-valgrind--disable-debug--disable-gst-debug
  4. make&&makeinstall

5. 编译gst plugins base

下载gst-plugins-base-0.10.35.tar.gz。

编译脚本:

[html] view plaincopyprint?

  1. CC=arm-none-linux-gnueabi-gccPKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig./configure--build=i686-linux--host=arm-none-linux\
  2. --prefix=/home/work/distCFLAGS=-I/home/work/dist/include--disable-valgrind--disable-x--disable-gnome_vfs--disable-alsa--disable-ogg--disable-pango--disable-theora--disable-vorbis--disable-examples
  3. make&&makeinstall

好了, 万事具备, 只欠东风了。接下来开始编译Qt

Qt的配置文件很复杂, 我就不写出来了, 就是要注意这三点:

1. 在Qt 的configure 时加上-force-pkg-config, 否则会在WebCore的feature.pri中检查时报"Disabling video due the lack of GLib/Gio/GStreamer.",

也就是说会不支持video.

具体可以看这个pri片段:

[html] view plaincopyprint?

  1. !contains(QT_CONFIG,no-pkg-config):system(pkg-config--existsglib-2.0gio-2.0gstreamer-0.10):{
  2. DEFINES-=ENABLE_VIDEO=0
  3. DEFINES+=ENABLE_VIDEO=1
  4. DEFINES+=WTF_USE_GSTREAMER=1
  5. DEFINES-=WTF_USE_GSTREAMER=0
  6. }else{
  7. message("DisablingvideoduethelackofGLib/Gio/GStreamer.")
  8. DEFINES-=ENABLE_VIDEO=1
  9. DEFINES+=ENABLE_VIDEO=0
  10. }

如果不指定-force-pkg-config, 就会被当作no-pkg-config.

2. 为configure指定:PKG_CONFIG_PATH=/home/work/dist/lib/pkgconfig, 否则也会diabling video

3. 为了让webkit库能找到gstreamer等库, 还需要在webkit.pro中加上