Giter Club home page Giter Club logo

qtav's Introduction

QtAV is a media playing 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. 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

  • Seek, pause/resume
  • Video capture
  • OSD
  • Aspect ratio
  • Transform video using GraphicsItemRenderer. (rotate, shear, etc)
  • Playing frame by frame (currently support forward playing)
  • Playing speed control. At any speed.
  • Variant streams: locale file, http, rtsp, etc.
  • Playing music (not perfect)
  • Volume control
  • Fullscreen, stay on top
  • Compatiblity: QtAV can be built with both Qt4 and Qt5. QtAV supports both FFmpeg(>=0.9) and Libav.
  • Multiple render engine support. Currently supports QPainter, GDI+, Direct2D, XV and OpenGL(and ES2).
  • Dynamically change render engine when playing.

Extensible Framework (work in progress)

QtAV currently uses FFmpeg to decode video, convert image and audio data, and uses PortAudio to play sound. Every part in QtAV is designed to be extensible. For example, you can write your audio output class using OpenAL, image converting class using cuda to get better performance etc. These features will be added in the feature by default.

For Developers

Requirements

  1. FFmpeg (>=0.9)Latest version is recommanded.
    FFmpeg
  2. Qt 4 or 5
    Qt
  3. PortAudio v19
    PortAudio LogoPortAudio

The required development files for MinGW can be found in sourceforge page: depends

Build

You can build QtAV with many compilers and on many platforms. You can use gcc, clang, vc to compile it.
See the wiki Build QtAV

Here is a brief guide:

It's recommend not to build in source dir.

cd your_build_dir
qmake QtAV_project_dir/QtAV.pro
make

qmake will run check the required libraries at the first time, so you must make sure those libraries can be found by compiler. Then qmake will create a cache file .qmake.cache in your build dir. Cache file stores the check results, for example, whether portaudio is available. If you want to recheck, run qmake QtAV_project_dir/QtAV.pro -config recheck

WARNING: If you are in windows mingw with sh.exe environment, you may need run qmake twice.

How To Write a Player

Wrtie a media player using QtAV is quite easy.

WidgetRenderer 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.

For End Users

Player Usage

An simple player can be found in examples. The command line options is

player [-vo qt|gl|d2d|gdi|xv] [url/path]

You can choose a paint engine with -vo option. For example, in windows that support Direct2D, you can run

player -vo d2d filename

The default is Qt's paint engine.

Default Shortcuts

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

The default behavior can be replaced by subclassing QObject and call void AVPlayer::setPlayerEventFilter(QObject *obj) (use null to disable).

TODO

  1. Component framework
  2. Subtitle
  3. Filters
  4. Hardware acceleration using DirectX, NVIDIA Cuda, ATI UVD, Intel IPP, OpenCL and OpenGL:
  • decoding: DXVA, XvBA, cuvid, VAAPI
  • image, audio and text filters
  • rendering: DirectX
  1. Stylish GUI based on Qt Graphics View Framework
  2. Document and SDK
  3. Other: better sync method and seeking, tests, playing statistics, etc.
  4. Region of interest support.
  5. More platform support. Maemo, Android, iOS, BB10 etc. Depends on Qt and FFmpeg for those platforms.
  6. ppa, debian package etc.

Screenshots

QtAV on Win8

Alt text

QtAV on Mac OS X

Alt text

IP camera using QtAV. OS: Fedora 18 (some developers from Italy http://www.selcomsrl.eu/)

Alt text

Rotate a video item

Alt text

Video Wall

Alt text

##Donate 资助

软件由我一人利用空余学习和工作时间开发。如果您觉得不错,可以考虑资助一下,非常方便 Alipay

#####资助名单

Copyright © Wang Bin [email protected]

Shanghai University, Shanghai, China

2013-01-21

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.