A cross-platform multimedia framework based on Qt and FFmpeg(https://github.com/wang-bin/avbuild). High performance. User & developer friendly. Supports Android, iOS, Windows store and desktops. 基于Qt和FFmpeg的跨平台高性能音视频播放框架
C++ C QMake Python Shell CMake Other
Failed to load latest commit information.
.github add github issue template Jul 13, 2017
cmake cmake: use rc template Mar 15, 2017
config.tests config: test videotoolbox header only May 8, 2018
contrib oal: fix crash if load failed Jun 11, 2016
debian debian: add missing runtime dependency (qml settings module) May 8, 2018
doc version 1.11.0 Jun 20, 2016
examples fix rightLevelChanged signal Feb 18, 2018
msys2 add PKGBUILD for msys2 #533 May 19, 2017
python Add Python bindings May 16, 2018
qml Update libQmlAV.pro Jan 9, 2018
qtc_packaging sdk_deploy: dest lib name is *Qt5AV* Oct 11, 2017
src fix the 1st frame timestamp. step backward at beginning should work Jun 14, 2018
tests support msvc static build. qml is not supported yet Jan 6, 2017
tools fix ios universal prl name Apr 13, 2017
widgets fix -Wexpansion-to-defined Jun 8, 2018
.gitignore Add Python bindings May 16, 2018
.gitmodules android: use jmi for io to get rid of private module dependency Jan 28, 2018
.qmake.conf version 1.12.0 Jun 21, 2017
.travis.yml ci: use trusty for travis. add gcc Dec 9, 2015
CMakeLists.txt cmake: set auto moc policy CMP0071 to new May 8, 2018
Changelog version 1.12.0 Jun 21, 2017
QtAV.pro let mingw build d3d11 decoder Apr 10, 2016
README.md Fix a typo in README Aug 7, 2017
appveyor.yml ci: add vs2017 Oct 6, 2017
common.pri version 1.12.0 Jun 21, 2017
configure.pri qmake: detect multi-arch build, sse4_1, enable openal for ios Feb 28, 2016
deploy.pri deb: add players Sep 24, 2014
gpl-3.0.txt misc. copyright, format .etc Oct 31, 2012
lgpl-2.1.txt License change to LGPL v2.1 Feb 3, 2013
pack.pri fix make deb error. value in control can not have empty lines Mar 16, 2014
root.pri qmake: detect multi-arch build, sse4_1, enable openal for ios Feb 28, 2016


QtAV Build Status Appveyor

Join the chat at https://gitter.im/QtAV/Lobby

QtAV is a multimedia playback library based on Qt and FFmpeg. It can help you to write a player with less effort than ever before.

QtAV has been added to FFmpeg projects page http://ffmpeg.org/projects.html

QtAV is free software licensed under the term of LGPL v2.1. The player example is licensed under GPL v3. If you use QtAV or its constituent libraries, you must adhere to the terms of the license in question.

Home page


QtAV can meet your most demands

  • Hardware decoding suppprt: DXVA2, VAAPI, VDA/VideoToolbox, CedarX, CUDA(the 1st player support CUDA on linux?)
  • OpenGL and ES2 support for almost all formats including Hi10P videos (The 1st player/library support 10bit in ES2? VLC, XBMC, mplayer does not support now)
  • Real time preview
  • Video capture in rgb and yuv format
  • OSD and custom filters
  • Filters in libavfilter, for example stero3d, blur
  • Subtitle track select. Dynamic change FFmpeg and libass engine
  • Play frame by frame
  • Playback speed control
  • Variant streams: locale file, http, rtsp etc. and your custom streams
  • Audio channel, tracks and external audio tracks
  • Dynamically change render engine when playing.
  • Dynamically change video decoder
  • Multiple video outputs for 1 player
  • Video eq(software and OpenGL): brightness, contrast, saturation, hue
  • QML support. Most playback APIs are compatible with QtMultimedia module
  • Compatibility: QtAV can be built with both Qt4 and Qt5, FFmpeg(>=1.0) and Libav (>=9.0). Latest FFmpeg release is recommended.

Extensible Framework

Some components in QtAV are designed to be extensible. For example, you can write your decoder, audio output for particular platform. Here is a very good example to add cedar hardware accelerated decoder for A13-OLinuXino

For Developers


Qt FFmpeg Libav OpenAL

The required development files to build QtAV can be found in sourceforge page: depends


See the wiki Build QtAV and QtAV Build Configurations

How To Write a Player

Write a media player using QtAV is quite easy.

GLWidgetRenderer2 renderer;
AVPlayer player;

For more detail to using QtAV, see the wiki Use QtAV In Your Project or examples.

QtAV can also be used in Qml

import QtQuick 2.0
import QtAV 1.6
Item {
    Video {
        id: video
        source: "test.mp4"
    MouseArea {
        anchors.fill: parent
        onClicked: video.play()

How To Contribute

  • Fork QtAV project on github and make a branch. Commit in that branch, and push, then create a pull request to be reviewed and merged.
  • Create an issue if you have any problem when using QtAV or you find a bug, etc.
  • What you can do: translation, write document, wiki, find or fix bugs, give your idea for this project etc.


  • Wang Bin(Lucas Wang): creator, maintainer
  • Gianluigi Tiesi(sherpya): avdevice input support
  • Stefan Ladage: QIODevice support. Wiki about build QtAV for iOS. Let OpenAL work on OSX and iOS
  • Miroslav Bendik: Cedarv support. Better qmlvideofx appearance
  • theoribeiro: initial QML support
  • Vito Covito: interrupt callback
  • Alexander, Marius Wachtler, Petar Koretić, Sandro Cavazzoni(skaman), Dimitri E. Prado, karlox ...

For End Users

Player Commandline Options

Run player -h

Default Shortcuts

  • Double click: fullscreen switch
  • Ctrl+O: open a file
  • Space: pause/continue
  • F: fullscreen on/off
  • T: stays on top on/off
  • N/B: show the next/previous frame. Continue the playing by pressing "Space"
  • O: OSD
  • P: replay
  • Q/ESC: quit
  • S: stop
  • A: switch aspect ratio
  • R: rotate 90
  • M: mute on/off
  • Up / Down: volume + / -
  • Ctrl+Up/Down: speed + / -
  • -> / <-: seek forward / backward
  • Crtl+Wheel: zoom in/out
  • Drag and drop a media file to player


Use QtAV in QML with OpenGL shaders(example is from qtmultimedia. But qtmultimedia is replaced by QtAV)

Alt text

Alt text


Alt text

Donate 捐赠

Copyright © Wang Bin wbsecg1@gmail.com

Shanghai University->S3 Graphics->Deepin, Shanghai, China