Skip to content

Commit

Permalink
update README, appveyor
Browse files Browse the repository at this point in the history
  • Loading branch information
wang-bin committed May 21, 2015
1 parent 7bffd07 commit 3081a00
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 58 deletions.
62 changes: 18 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# [QtAV](http://www.qtav.org) [![Build Status](https://travis-ci.org/wang-bin/QtAV.svg)](https://travis-ci.org/wang-bin/QtAV)
# [QtAV](http://www.qtav.org) [![Build Status](https://travis-ci.org/wang-bin/QtAV.svg)](https://travis-ci.org/wang-bin/QtAV) [![Appveyor](https://ci.appveyor.com/api/projects/status/github/wang-bin/qtav?svg=true&passingText=windows%20-%20OK)](https://ci.appveyor.com/project/wang-bin/qtav)

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

QtAV has been added to FFmpeg projects page [http://ffmpeg.org/projects.html](http://ffmpeg.org/projects.html)
Expand All @@ -9,32 +9,28 @@ QtAV has been added to FFmpeg projects page [http://ffmpeg.org/projects.html](ht
you must adhere to the terms of the license in question.**


#### [Home page](http://www.qtav.org), [Download binaries from sourceforge](https://sourceforge.net/projects/qtav) , [Source code on github](https://github.com/wang-bin/QtAV)
#### [Home page](http://www.qtav.org), [Download binaries from sourceforge](https://sourceforge.net/projects/qtav/files/release), [Latest build](https://sourceforge.net/projects/qtav/files/ci), [Source code on github](https://github.com/wang-bin/QtAV)

### Features

QtAV can meet your most demands

- Hardware decoding suppprt: DXVA2, VAAPI, VDA, CedarX, CUDA(the 1st player support CUDA on linux?)
- OpenGL and ES2 support for Hi10P and other 16-bit YUV videos (The 1st player/library support in ES2? VLC, XBMC, mplayer does not support now)
- Hardware decoding suppprt: DXVA2, VAAPI, VDA(the most effecient VDA decoder), 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 supports ass, srt etc. Dynamic change FFmpeg and libass engine
- Playing frame by frame (currently support forward playing)
- Playback speed control. At any speed.
- Variant streams: locale file, http, rtsp, etc.
- Choose audio channel
- Choose media stream, e.g. play a desired audio track
- Renderers: QPainter(QWidget, QGraphicsItem), GDI+, Direct2D, XV and OpenGL(and ES2).
- 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.
- Multiple video outputs for 1 player
- Region of interest(ROI), i.e. video cropping
- Video eq(software and OpenGL): brightness, contrast, saturation, hue
- QML support. Most playback APIs are compatible with QtMultimedia module
- Compatiblity: QtAV can be built with both Qt4 and Qt5. QtAV supports
both FFmpeg(>=1.0) and [Libav](http://libav.org) (>=9.0). Latest FFmpeg release is recommended.
- Compatiblity: QtAV can be built with both Qt4 and Qt5, FFmpeg(>=1.0) and [Libav](http://libav.org) (>=9.0). Latest FFmpeg release is recommended.


### Extensible Framework
Expand All @@ -46,15 +42,12 @@ QtAV can meet your most demands

#### Requirements

[![Qt](http://qt-project.org/images/qt13a/Qt-logo.png "Qt4.8 or Qt5")](http://qt-project.org)
[![Qt](http://upload.wikimedia.org/wikipedia/commons/thumb/9/94/Qt_logo.svg/64px-Qt_logo.svg.png "Qt4.8 or Qt5")](http://www.qt.io)
[![FFmpeg](http://ffmpeg.org/ffmpeg-logo.png "(>=1.0)Latest version is recommanded")](http://ffmpeg.org)
![OpenAL](http://upload.wikimedia.org/wikipedia/zh/2/28/OpenAL_logo.png "OpenAL or OpenAL soft")
[![Libav](http://libav.org/libav-logo-text.png ">=9.0")](http://libav.org)
[![PortAudio](http://www.portaudio.com/images/portaudio_logotext.png)](http://www.portaudio.com)

Latest FFmpeg, Qt5 and OpenAL releases are preferred.
![OpenAL](http://upload.wikimedia.org/wikipedia/zh/2/28/OpenAL_logo.png "OpenAL or OpenAL soft")

**The required development files for MinGW can be found in sourceforge
**The required development files to build QtAV can be found in sourceforge
page: [depends](https://sourceforge.net/projects/qtav/files/depends)**

#### Build
Expand All @@ -64,10 +57,10 @@ See the wiki [Build QtAV](https://github.com/wang-bin/QtAV/wiki/Build-QtAV) and

#### How To Write a Player

Wrtie a media player using QtAV is quite easy.
Wrtie a media player using QtAV quite easy.

GLWidgetRenderer2 renderer;
renderer.show();
renderer.s
AVPlayer player;
player.setRenderer(&renderer);
player.play("test.avi");
Expand Down Expand Up @@ -109,23 +102,9 @@ QtAV can also be used in **Qml**
For End Users
-------------

#### Player Usage
#### Player Commandline Options

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

player [-ao null] [-vo qt|gl|d2d|gdi|xv] [-vd "dxva[cuda[;vaapi[;vda[;ffmpeg]]]]"] [--no-ffmpeg-log] [url|path|pipe:]

To disable audio output, add `-ao null`

Choose a render engine with _-vo_ option(default is OpenGL). For example, in windows that support Direct2D, you can run

player -vo d2d filename

To select decoder, use `-vd` option. Value can be _dxva_, _vaapi_ and _ffmpeg_, or a list separated by `;` in priority order. For example:

player -vd "dxva;ffmpeg" filename

will use dxva if dxva can decode, otherwise ffmpeg will be used.
Run `player -h`


#### Default Shortcuts
Expand Down Expand Up @@ -166,18 +145,13 @@ Use QtAV in QML with OpenGL shaders(example is from qtmultimedia. But qtmultimed


***
### Donate 资助
### [Donate 捐赠](http://www.qtav.org/donate.html)

[PayPal ![Paypal](http://www.paypal.com/en_US/i/btn/btn_donate_LG.gif)](http://www.qtav.org#donate)
[![Support via Gittip](https://rawgithub.com/twolfson/gittip-badge/0.1.0/dist/gittip.png)](https://www.gittip.com/wang-bin)
[Gittip ![Gittip](https://www.gittip.com/assets/10.1.51/logo.png)](https://www.gittip.com/wang-bin)
![AliPay](http://www.qtav.org/images/apbihytg7x2iyb8g0f-50x50.png "支付宝")
- - -



> Copyright © Wang Bin [email protected]
> Shanghai University->S3 Graphics->Deepin, Shanghai, China
> 2013-01-21
> 2013-01-21
30 changes: 16 additions & 14 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,19 @@ init:
- echo %PROCESSOR_IDENTIFIER%

install:
- git submodule update --init
- mkdir build
- cd build
- ps: $qt_url = 'http://sourceforge.net/projects/buildqt/files/release/' + $env:qt + '/Qt' + $env:qt + '-' + $env:cc + $env:arch + $env:suffix + '.7z/download'
- ps: Start-FileDownload $qt_url qt.7z
- ps: Start-FileDownload http://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%2Bx64-20141216.7z/download av.7z
- ps: Start-FileDownload http://sourceforge.net/projects/qtav/files/depends/QtAV-depends-windows-x86%2Bx64-20150521.7z/download av.7z
- 7z x qt.7z > NUL
- 7z x av.7z > NUL
- move Qt%qt%-* Qt #Qt%qt%-%cc%%arch%%suffix% Qt
- move QtAV-depends* AV
- xcopy /syi AV\include Qt\include
- xcopy /syi AV\lib Qt\lib
- copy /y AV\bin\*.dll Qt\bin
- xcopy /syi AV\include Qt\include > NUL
- xcopy /syi AV\lib Qt\lib > NUL
- copy /y AV\bin\*.dll Qt\bin > NUL

before_build:
- set PATH=%CD%\Qt\bin;%PATH%
Expand All @@ -51,7 +52,8 @@ after_build:
- copy /y Qt\bin\sw*.dll bin
- if exist Qt\bin\po*.dll copy /y Qt\bin\po*.dll bin
- if exist Qt\bin\msvc*.dll copy /y Qt\bin\msvc*.dll bin
- if exist Qt\bin\OpenAL*.dll copy /y Qt\bin\OpenAL*.dll bin
- if exist Qt\bin\OpenAL32*.dll copy /y Qt\bin\OpenAL32*.dll bin
- if exist Qt\bin\OpenAL32-%cc%.dll copy /y Qt\bin\OpenAL32-%cc%.dll bin\OpenAL32.dll
- if exist Qt\bin\D3DCompiler_*.dll copy /y Qt\bin\D3DCompiler_*.dll bin
- if exist Qt\bin\lib*.dll copy /y Qt\bin\lib*.dll bin # libEGL, GLESv2, gcc_s_dw2-1, stdc++-6, winpthread-1
- echo [Paths] > bin\qt.conf
Expand All @@ -64,13 +66,13 @@ after_build:
- if exist Qt\bin\Qt5Network.dll copy /y Qt\bin\Qt5Network.dll bin
- if exist Qt\bin\Qt*Qml.dll copy /y Qt\bin\Qt*Qml.dll bin
- if exist Qt\bin\Qt*Quick.dll copy /y Qt\bin\Qt*Quick.dll bin
- if exist Qt\qml\Qt xcopy /syi Qt\qml\Qt bin\qml\Qt
- if exist Qt\qml\QtQml xcopy /syi Qt\qml\QtQml bin\qml\QtQml
- if exist Qt\qml\QtQuick xcopy /syi Qt\qml\QtQuick bin\qml\QtQuick
- if exist Qt\qml\QtQuick.2 xcopy /syi Qt\qml\QtQuick.2 bin\qml\QtQuick.2
- xcopy /syi Qt\plugins\platforms bin\plugins\platforms
- xcopy /syi Qt\plugins\imageformats bin\plugins\imageformats
- xcopy /syi Qt\plugins\iconengines bin\plugins\iconengines
- if exist Qt\qml\Qt xcopy /syi Qt\qml\Qt bin\qml\Qt > NUL
- if exist Qt\qml\QtQml xcopy /syi Qt\qml\QtQml bin\qml\QtQml > NUL
- if exist Qt\qml\QtQuick xcopy /syi Qt\qml\QtQuick bin\qml\QtQuick > NUL
- if exist Qt\qml\QtQuick.2 xcopy /syi Qt\qml\QtQuick.2 bin\qml\QtQuick.2 > NUL
- xcopy /syi Qt\plugins\platforms bin\plugins\platforms > NUL
- xcopy /syi Qt\plugins\imageformats bin\plugins\imageformats > NUL
- xcopy /syi Qt\plugins\iconengines bin\plugins\iconengines > NUL
- xcopy /syi tools\install_sdk\mkspecs mkspecs
- copy /y ..\qtc_packaging\ifw\packages\com.qtav.product.dev\data\sdk_deploy.bat .
- copy /y ..\qtc_packaging\ifw\packages\com.qtav.product.player\data\*.bat .
Expand All @@ -79,7 +81,7 @@ after_build:
- move lib_* lib_
- if exist lib_\*AV*.lib xcopy /syi lib_\*AV*.lib lib
- if exist lib_\*AV*.a xcopy /syi lib_\*AV*.a lib
- 7z a %APPVEYOR_BUILD_FOLDER%\QtAV-Qt%qt%-%cc%%arch%-%APPVEYOR_REPO_COMMIT:~0,7%.7z bin lib include mkspecs sdk_deploy.bat install.bat uninstall.bat
- 7z a %APPVEYOR_BUILD_FOLDER%\QtAV-Qt%qt%-%cc%%arch%-%APPVEYOR_REPO_COMMIT:~0,7%.7z bin lib include mkspecs sdk_deploy.bat install.bat uninstall.bat > NUL

test: off

Expand All @@ -94,4 +96,4 @@ deploy:
password:
secure: 2mQg4oxdX8S7rMJz2TCGGg==
folder: /home/frs/project/qtav/ci # why always relative path even if starts with / ? I have to make a link home/frs/project/qtav/ci => /home/frs/project/qtav/ci
active_mode: false
active_mode: false

0 comments on commit 3081a00

Please sign in to comment.