qt + ffmpeg 跨平台

WangBin 8bb780215b Update README.md 2 роки тому
.github fdc613dc99 Update ISSUE_TEMPLATE 3 роки тому
cmake 01b9c541d5 根据 CMAKE_BUILD_TYPE 查找库 4 роки тому
config.tests 552e0ad88a config: test videotoolbox header only 7 роки тому
contrib 3ace8ab961 oal: fix crash if load failed 9 роки тому
debian b51fee72a8 release 1.13.0 5 роки тому
doc 3b418cbfa9 version 1.11.0 8 роки тому
examples 4ceee22176 Update MainWindow.cpp 3 роки тому
msys2 417b47a1a6 add PKGBUILD for msys2 #533 8 роки тому
python ec800baee8 Add Python bindings 7 роки тому
qml d93eb445a5 Update MediaMetaData.cpp 3 роки тому
qtc_packaging b51fee72a8 release 1.13.0 5 роки тому
src 3b937991af Merge branch '1404' 3 роки тому
tests 9d49102382 support msvc static build. qml is not supported yet 8 роки тому
tools e22230b9c8 fix ios universal prl name 8 роки тому
widgets 784a1a44cc Update GLWidgetRenderer2.h 3 роки тому
.gitignore ec800baee8 Add Python bindings 7 роки тому
.gitmodules b813048743 android: use jmi for io to get rid of private module dependency 7 роки тому
.qmake.conf b51fee72a8 release 1.13.0 5 роки тому
.travis.yml 86a7dc87e7 ci: use trusty for travis. add gcc 9 роки тому
CMakeLists.txt 04a2bba7e9 Add new CMake option to be able to disable QML interface 5 роки тому
Changelog b51fee72a8 release 1.13.0 5 роки тому
QtAV.pro ce21c55b6e qt6 support 3 роки тому
README.md 8bb780215b Update README.md 2 роки тому
appveyor.yml 9db34cdf64 ci: add vs2017 7 роки тому
common.pri fe42d67f56 Qt doesn't use debug suffix for mingw-built libraries, so QtAV shouldn't use it too 4 роки тому
configure.pri 488569dad6 qmake: detect multi-arch build, sse4_1, enable openal for ios 9 роки тому
deploy.pri 039be0bcb4 Fix make install with alernate root path 5 роки тому
gpl-3.0.txt 0def632081 misc. copyright, format .etc 12 роки тому
lgpl-2.1.txt d4c178dd4e License change to LGPL v2.1 12 роки тому
pack.pri 892b3fb016 fix make deb error. value in control can not have empty lines 11 роки тому
root.pri 488569dad6 qmake: detect multi-arch build, sse4_1, enable openal for ios 9 роки тому

README.md

QtAV Build Status Appveyor

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.

Home page

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 FFmpegLatest version is recommanded") 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


Donate 捐赠

Copyright © Wang Bin wbsecg1@gmail.com

2013-01-21