• Stars
    star
    3,611
  • Rank 11,710 (Top 0.3 %)
  • Language
    C++
  • Created over 11 years ago
  • Updated 12 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A cross-platform multimedia framework based on Qt and FFmpeg. 基于Qt和FFmpeg的跨平台高性能音视频播放框架. Recommand to use new sdk https://github.com/wang-bin/mdk-sdk

I'm not developing QtAV, patches are still welcome. You can try my new sdk which is actively developed

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.

Features

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

Requirements

Qt FFmpeg Libav OpenAL

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

Build

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;
renderer.show();
AVPlayer player;
player.setRenderer(&renderer);
player.play("test.avi");

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.

Contributors

  • 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

Screenshots

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

Alt text

Alt text

QMLPlayer

Alt text


Copyright © Wang Bin [email protected]

2013-01-21

More Repositories

1

avbuild

ffmpeg花式编译. build tool for all platforms: iOS, android, raspberry pi, win32, uwp, linux, macOS etc.
Shell
524
star
2

mdk-sdk

multimedia development kit. download:
Shell
235
star
3

qdevicewatcher

Detect the device changes. Support hotplug event for win and linux now.
C++
180
star
4

fvp

Flutter official video player plugin based on libmdk for all desktop+mobile platforms. download prebuilt examples from github actions. https://pub.dev/packages/fvp
Dart
99
star
5

JMI

JNI Modern Interface in C++17
C++
74
star
6

mdk-examples

media player examples based on mdk sdk. runs on all platforms. sdk download:
C++
55
star
7

cmake-tools

Cmake utilities for C++11 projects targeting Windows(host/cross build), Raspberry Pi (host/cross build), macOS, iOS, Android
CMake
36
star
8

PhotoKit

Photo browser with 3D effects, slide effects and animations. Share to weibo is supported
C++
26
star
9

qtmultimedia-plugins-mdk

qt5 multimedia plugins implemented on top of libmdk
C++
24
star
10

AND

Android Native Dev in Modern C++
C++
23
star
11

ThreadLocal

portable and implemention configurable c++11 like thread local
C++
22
star
12

buildqt

scripts to build Qt4 and Qt5 for variant platforms
C
20
star
13

qop

Qt Output Parser for tar, zip, unzip, unrar, 7z with a compression/extraction progress indicator. Support platforms: windows(Qt4), Linux(Qt4, tested on ubuntu 10.04), motorola ezx(Qt2, tested on ROKR E6) and Maemo5 etc.
C++
19
star
14

qglvideowidget

rendering rgb and yuv images via opengl in qt
C++
18
star
15

dllapi

call c api by dynamically loading it's library and without code change. Use this instead(more features, supper set) https://github.com/wang-bin/capi
C++
16
star
16

obs-mdk

obs media player plugin based on [mdk-sdk](https://github.com/wang-bin/mdk-sdk). fully hardware accelerated
C++
11
star
17

appkey

license key generator and validator used in libmdk
C
11
star
18

mdk-mft

libmdk codec plugin based on microsoft media foundation transform
C++
10
star
19

capi

Use C api as dynamically loaded calls in C++. Header only. Used by QtAV project(libass, libEGL API)
C++
9
star
20

qweiboapi

Qt wrapper for sina weibo api
C++
9
star
21

ios.cmake

support bitcode, multi-arch build in command line. see also https://github.com/wang-bin/cmake-tools/blob/master/ios.cmake
CMake
8
star
22

build_angle

cmake script for google angle project
CMake
6
star
23

d-pointer

An easy to use interface of d-pointer with Qt's feature. Storing data in d-pointer makes your library binary compatible.
C++
6
star
24

LibProjWizard4QtCreator

Wizard to create a library project which can be easily used by other projects
C++
5
star
25

ugs

universal graphics surface
C++
5
star
26

libexif-port

port for win msvc etc.
C
4
star
27

qupdater

Application updater framework based on Qt
C
4
star
28

SPV

Swift Video Player and QuickLook plugin
Swift
4
star
29

lockless

lock free containers
C++
3
star
30

ezlog

a tiny and easy to use log system for c/c++
C
3
star
31

qlzma

lzma with qt gui
C
3
star
32

cppcompat

std c++ compatibility layer
C++
3
star
33

mdk-dav1d

dav1d plugin for libmdk
C++
3
star
34

UniversalDXSDK

A more universal DirectX SDK can work with multiple versions of Visual Studio, MinGW, etc.
C++
3
star
35

jquery.mobile.showhere

Make dynamic popup dialogs easy. with css animation and other effects. modified from jquery.mobile.actionsheet
JavaScript
2
star
36

WindModel

Computing winds on the earth from satellite pictures using Matlab. For NPMCM 2012.
Objective-C
2
star
37

mdk-sunxi

sunxi cedarv decoder + gl renderer via UMP and EGLImage interop
C++
2
star
38

devpkgs

cmake project for some open-source libraries
CMake
2
star
39

MyTalkOnLVSCon2017

2
star
40

libmdk-capi

public api set of libmdk
C++
2
star
41

mdk-android

libmdk https://github.com/wang-bin/mdk-sdk android java sdk and example
C++
2
star
42

QLangWidget

Dynamic language selection widgets
C++
2
star
43

swift-mdk

libmdk https://github.com/wang-bin/mdk-sdk swift binding
Swift
2
star
44

mkapi

source transformer from c headers to dynamical loaded source for https://github.com/wang-bin/capi. based on clang3.4
C++
2
star
45

qget

A downloader based on QtNetwork.
C++
1
star
46

apkrepack

Shell
1
star
47

libva_loader

dynamically load and resolve libva symbols regardless fucking symbol versioning
C++
1
star
48

qaerowindow

qt widget with aero, blur and Semi-transparent effect
C++
1
star
49

mdk-braw

blackmagic raw plugin for libmdk https://github.com/wang-bin/mdk-sdk used by gyroflow
C++
1
star
50

vkld

vulkan api loader loader
C++
1
star