You are not logged in.

#1 2010-12-15 22:08:37

hagabaka
Member
Registered: 2010-12-15
Posts: 34

Making QtWebkit support HTML5 video and audio

For those who don't know, HTML5 enables most current browsers to play videos and audios without the need of any plugin. QtWebkit supports this feature, so browsers using it such as Rekonq and Arora should support it too. However on Arch Linux this does not work outside of the box.

I've tried to make this work and made a little progress, and I'm wondering if anyone has made similar attempts, have suggestions, or are willing to try this out. What I've done basically is to compile Qt with Phonon, and then remove the Phonon files when building the package, so that it uses the Phonon that comes with KDE. I included the PKGBUILD below, and you just need to copy the extra/qt directory from abs, and override the PKGBUILD or apply the patch.

I also installed phonon-vlc-qt from AUR, which according to this post contains some fixes to support HTML5 video/audio. However neither this nor the default gstreamer backend works for me. With vlc the vidoe doesn't play, and with gstreamer the browser crashes. To try different backends for Phonon, open KDE's System Settings - Multimedia - Backends, and use the Prefer and Defer buttons.

Some links for testing HTML5 video and audio:

The PKGBUILD:

# $Id: PKGBUILD 98480 2010-11-09 22:17:20Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>

pkgname=qt
pkgver=4.7.1
pkgrel=2
pkgdesc='A cross-platform application and UI framework'
arch=('i686' 'x86_64')
url='http://qt.nokia.com/'
license=('GPL3' 'LGPL')
depends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus'
    'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib'
    'xdg-utils' 'hicolor-icon-theme')
optdepends=('postgresql-libs: PostgreSQL driver'
    'libmysqlclient: MySQL driver'
    'unixodbc: ODBC driver'
    'libxinerama: Xinerama support'
    'libxcursor: Xcursor support'
    'libxfixes: Xfixes support')
makedepends=('mesa' 'postgresql-libs' 'mysql' 'unixodbc' 'cups' 'gtk2')
install="${pkgname}.install"
options=('!libtool')
_pkgfqn="qt-everywhere-opensource-src-${pkgver}"
source=("ftp://ftp.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
        'assistant.desktop' 'designer.desktop' 'linguist.desktop'
        'qtconfig.desktop')
md5sums=('6f88d96507c84e9fea5bf3a71ebeb6d7'
         'fc211414130ab2764132e7370f8e5caa'
         '85179f5e0437514f8639957e1d8baf62'
         'f11852b97583610f3dbb669ebc3e21bc'
         '6b771c8a81dd90b45e8a79afa0e5bbfd')

build() {
    unset QMAKESPEC
    export QT4DIR=$srcdir/$_pkgfqn
    export PATH=${QT4DIR}/bin:${PATH}
    export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}

    cd $srcdir/$_pkgfqn

    sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf
    sed -i "/^QMAKE_RPATH/s| -Wl,-rpath,||g" mkspecs/common/g++.conf
    sed -i "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" mkspecs/common/g++.conf

    ./configure -confirm-license -opensource \
        -prefix /usr \
        -docdir /usr/share/doc/qt \
        -plugindir /usr/lib/qt/plugins \
        -importdir /usr/lib/qt/imports \
        -datadir /usr/share/qt \
        -translationdir /usr/share/qt/translations \
        -sysconfdir /etc \
        -examplesdir /usr/share/doc/qt/examples \
        -demosdir /usr/share/doc/qt/demos \
        -largefile \
        -plugin-sql-{psql,mysql,sqlite,odbc} \
        -system-sqlite \
        -xmlpatterns \
        -phonon \
        -phonon-backend \
        -svg \
        -webkit \
        -script \
        -scripttools \
        -system-zlib \
        -system-libtiff \
        -system-libpng \
        -system-libmng \
        -system-libjpeg \
        -nomake demos \
        -nomake examples \
        -nomake docs \
        -no-rpath \
        -openssl-linked \
        -silent \
        -optimized-qmake \
        -dbus \
        -reduce-relocations \
        -no-separate-debug-info \
        -gtkstyle \
        -opengl \
        -no-openvg \
        -glib
    make
}

package() {
    cd $srcdir/$_pkgfqn
    make INSTALL_ROOT=$pkgdir install

    # install missing icons and desktop files
    for icon in tools/linguist/linguist/images/icons/linguist-*-32.png ; do
        size=$(echo $(basename ${icon}) | cut -d- -f2)
        install -p -D -m644 ${icon} ${pkgdir}/usr/share/icons/hicolor/${size}x${size}/apps/linguist.png
    done
    install -p -D -m644 src/gui/dialogs/images/qtlogo-64.png ${pkgdir}/usr/share/icons/hicolor/64x64/apps/qtlogo.png
    install -p -D -m644 tools/assistant/tools/assistant/images/assistant.png ${pkgdir}/usr/share/icons/hicolor/32x32/apps/assistant.png
    install -p -D -m644 tools/designer/src/designer/images/designer.png ${pkgdir}/usr/share/icons/hicolor/128x128/apps/designer.png
    install -d ${pkgdir}/usr/share/applications
    install -m644 ${srcdir}/{linguist,designer,assistant,qtconfig}.desktop ${pkgdir}/usr/share/applications/

    # install license addition
    install -D -m644 LGPL_EXCEPTION.txt ${pkgdir}/usr/share/licenses/qt/LGPL_EXCEPTION.txt

    # Fix wrong path in pkgconfig files
    find ${pkgdir}/usr/lib/pkgconfig -type f -name '*.pc' \
        -exec perl -pi -e "s, -L${srcdir}/?\S+,,g" {} \;
    # Fix wrong path in prl files
    find ${pkgdir}/usr/lib -type f -name '*.prl' \
        -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \;
  # Remove phonon files which are installed by KDE
    rm -r ${pkgdir}/usr/{include/phonon/,lib/libphonon*,lib/pkgconfig/phonon.pc}
}

Diff from qt's PKGBUILD in ABS:

--- PKGBUILD.orig    2010-12-15 13:18:19.000000000 -0500
+++ PKGBUILD    2010-12-15 13:19:15.000000000 -0500
@@ -57,8 +57,8 @@
         -plugin-sql-{psql,mysql,sqlite,odbc} \
         -system-sqlite \
         -xmlpatterns \
-        -no-phonon \
-        -no-phonon-backend \
+        -phonon \
+        -phonon-backend \
         -svg \
         -webkit \
         -script \
@@ -109,4 +109,6 @@
     # Fix wrong path in prl files
     find ${pkgdir}/usr/lib -type f -name '*.prl' \
         -exec sed -i -e '/^QMAKE_PRL_BUILD_DIR/d;s/\(QMAKE_PRL_LIBS =\).*/\1/' {} \;
+  # Remove phonon files which are installed by KDE
+    rm -r ${pkgdir}/usr/{include/phonon/,lib/libphonon*,lib/pkgconfig/phonon.pc}
 }

Last edited by hagabaka (2010-12-15 22:11:46)

Offline

Board footer

Powered by FluxBB