QtAV is an open source library software written in Qt and designed to be used for creating full featured media playback applications for Linux, Microsoft Windows and BSD operating systems.
Features at a glance
It features support for seek, resume, pause, video capture, music playback, volume control, fullscreen, stay on top, frame by frame playback (only forward), support for both local and network files, as well as support for the Libav and FFmpeg projects.
Support for hardware decoding is implemented for the CedarX, VAAPI and DXVA2 APIs. It can save video files in the YUV and RGB formats, and implements support for OSD (On-screen display), custom filters, aspect ratio, music playback, volume control, and playing speed control.
It can also be used to rotate or shear any video file using GraphicsItemRenderer, allows for playing a specific audio track by choosing audio channels and media streams, and support multiple rendering engines, including Direct2D, OpenGL, QPainter, XV, and GDI+.
Lets apps playback local or remote files
As mentioned, the library allows for playback of local files, as well as remote ones via well known protocols, such as HTTP and RTSP. In addition, it supports multiple video outputs for a single player, and can dynamically change a render engine when playing a video file.
QtAV also supports ROI (Region of Interest), such as video cropping, video equalizers for modifying contrast, brightness, hue and saturation, as well as QML (Qt Modeling Language) through a plugin.
Under the hood and supported operating systems
The project can be easily built against the Qt4 or Qt5 frameworks, allowing developers to create video playback application with either toolkit. It is one of the most appreciated library software for creating feature-rich multimedia playback apps.
As mentioned, the software is platform-independent, supporting a plethora of GNU/Linux and UNIX-like operating systems, including BSD and Microsoft Windows. It was written in the C++ programming language and supports multiple keyboard shortcuts.
What is new in this release:
- XAudio2 support
- VideoToolbox hardware decoder(OSX) support. It can decode h264, h263, mpeg1, mpeg2, mpeg4. Better than VDA
- CUDA 0-copy support
- Dynamic video decoder switch when playing (try it in QMLPlayer)
- Embedded ass subtitles support
- ass subtitle font setup
- No OpenGL build fix for linux
- Fix qpainter rendering if vbo is used
- Fix OpenGL rendering for some rgb formats
- DXVA 0-copy improvement, intel clearvideo workaround etc.
- AO: add null backend
- HW: fix profile check
- Ref counted frames from ff decoders. This fix opengl crash when uploading textures
- Fix audio resampler parameters not set correctly
- VS2015 support
What is new in version 1.7.0:
- DXVA GPU zero-copy support. Lower cpu usage, better performance
- DXVA copy-back mode improvement
- VAAPI zero-copy improvement
- Fix opengl wrong display if switch decoder between VDA and FFmpeg
- Video encoding support
- External audio track support
- Pulseaudio improvement, fix crashes and hang
- OpenGL: disable VBO for ANGLE to workaround qpainter filters have no effect. Less GL calls. Fix OpenGLWindowRenderer can not update correctly
- Fix capture video when a zero-copy HW decoder is used.
- Fix wrong audio data is played at the beginning of playback
- Enable XV shm
- Improve a/v sync
- Build android on windows
- Fix msvc debug build
- Use OpenSL ES as for android. It works correctly now. No OpenAL required any more. Add volume control for OpenSL ES.
- Fix crashes
- Add ubuntu PPA: https://launchpad.net/~wbsecg1/+archive/ubuntu/qtav
- CI: appveyor for windows
- AVInput=>MediaIO. You can use it to support custom output when encoding video
- Add seekFinished, durationChanged, QML MediaPlayer.videoCapture, Subtitle delay etc
- QMLPlayer: swipe to seek
What is new in version 1.6.0:
- Async load
- Faster seek and preview. Thanks wm4(mpv developer)
- Better a/v sync solution. Now can play high fps video better than ANY other players.
- DXVA: enable HEVC decoder if libavcodec runtime supports. LAVFilters ffmpeg supports it.
- Cedarv improvements, nv12 output support, neon code from libvdpau-sunxi
- Multiple OpenAL instances support
- AVInput class to extend media sources. Support play from qrc resouces.
- Display the first frame after seek
- Better clock error correction
- Fix play frame by frame issues
- Fix QML video shake
- More details for error signals
- Apply user options in the next playback
- Dynamic load libass (submodule 'capi' is required)
- VA-API: fix blurred bottom line issue. works on libav >= 9 now.
- Progress is start at 0 by default even if 1st pts is not 0.
- Fix capture issues: capture current displayed frame, easier api
- RGB48 support. OpenGL only supports RGB48LE.
- Link to static ffmpeg support
- Fix open error if input url/path contains special charactors
What is new in version 1.5.0:
- Async load
- Faster seek and preview. Thanks wm4(mpv developer)
- Better a/v sync solution. Now can play high fps video better than ANY other players.
- DXVA: enable HEVC decoder if libavcodec runtime supports. LAVFilters ffmpeg supports it.
- Cedarv improvements, nv12 output support, neon code from libvdpau-sunxi
- Multiple OpenAL instances support
- AVInput class to extend media sources. Support play from qrc resouces.
- Display the first frame after seek
- Better clock error correction
- Fix play frame by frame issues
- Fix QML video shake
- More details for error signals
- Apply user options in the next playback
- Dynamic load libass (submodule 'capi' is required)
- VA-API: fix blurred bottom line issue. works on libav >= 9 now.
- Progress is start at 0 by default even if 1st pts is not 0.
- Fix capture issues: capture current displayed frame, easier api
- RGB48 support. OpenGL only supports RGB48LE.
- Link to static ffmpeg support
- Fix open error if input url/path contains special charactors
What is new in version 1.4.1:
- More QtMultimedia compatible QML playback API
- Debian package support. Now you can build on ubuntu>=14.04 using debuild
- Subtitle: libass renderering support. Dynamically change FFmpeg parser and libass
- Log level control support without changing any Qt logging functions (qDebug, qWarning etc.)
- Video orientation support in renderers
- Bug fix: video frame with alpha value. video stream start time >0. OpenAL can not close correctly...
- QML only: video preview.
- players: config UI in QMLPlayer. Video preview on progress bar.
What is new in version 1.4.0:
- Improve OpenGL: more pixel formats, supports QML(not stable), dynamic gl support etc.
- VAAPI: GLX direct rendering support. check 4k.
- DXVA: more decoding surfaces to improve performance
- VDA (OSX hardware decoding) support
- Android support. Easy to deploy
- Subtitle support, including QML
- Improve OpenAL. Works fine on most platforms including android
- FFmpeg libavfilter support
- Audio output api change
- Deploy script for ifw, OSX
- Bug fix
- WIP: dsound, opensl, audio engine, audio filters etc.
What is new in version 1.3.4:
- CUDA: better quality and performance, Fix wrong display order. No Mosaics.
- VAAPI and dxva support SSE4.1 to copy decoded frame for intel gpu. vaapi was added months ago, but the performance was very poor. With the help of SSE4.1 we have greate performance improvement.
- VAAPI supports drm
- Use latest FFmpeg's hw api
- Fix wrong display or crash if change HW decoder
- Add some options for AVCodec and AVFormat as decoder's meta properties.
- Metadata support
- Display aspect ratio use the value in stream if defined. Thank Sandro Cavazzoni
- Support install QtAV as a Qt module
- Fix wrong file name encoding.
- Display the image in a music file
What is new in version 1.3.2:
- OpenGL improvement and better performance(works on iOS and Android). Less CPU usage than VLC.
- Enable GLSL if supported
- Use GLSL to render YUV frames
- GLSL based video equalizer
- XV bug fix and improvement. Supports NV12. Supports video equalizer.
- Play from QIODevice support
- Capture YUV frames support.
- Fix wrong duration in OSD
- CUDA decoder working in progress
- Player:
- no gui blocking while opening a stream
- add config dialog
- Regressions:
- OpenGL can not display H10p
What is new in version 1.3.1:
- Initial OpenAL support.
- Fix hardware decoding crashes: seeking, packet loss(e.g. bad network)
- Allwinner's CedarX hardware decoding support. Thanks Miroslav Bendik.
- FFmpeg log and error handling. New class: AVError
- AVDictionary support for decoder and demuxer. API: AVPlayer::setOptionsForXXX()
- Fix crash on app exit
- Fix Hi10bits crash
- Build:
- fix XXX_EXPORT macro confliction.
- configurable qmake project etc.
- QMLPlayer: better UI
- player:
- wheel to zoom in/out.
- apply decoder without restart.
- exit on main window close.
- move EventHandler to player.
- Installer: ubuntu support.
- Screen saver for OSX, X11. Improve windows
What is new in version 1.3.0:
- Selectable audio track
- Multiple rendering target for 1 video support
- Hardware decoding support(unstable): DXVA2 for windows, VA-API for x11(bad performance now)
- Region of Interest(ROI) support, i.e. crop.
- Filter support(Experimental)
- Video eq: brightness, contrast, saturation
- Repeat support
- Mang api changes
- QML: compatible with many QtMultiMedia APIs
- build/install: check arch, fix wrong rpath and launch error on Mac, add installer
- player: playlist, history, better online tv, etc.
What is new in version 1.2.4:
- QML support(thanks theoribeiro ). Can replace some of qtmultimedia qml apps, e.g. qmlvideofx
- Fix build for FFmpeg >= 0.9, libav >= 0.8
- Channel can be choosed by user: original, stero, left, right, centre(mono)
- OSD for GL ES2 renderer
- player: statistics viewer, disable screensaver on widows when playing. Add many online tv channels
What is new in version 1.2.3:
- FFmpeg/libav avresample support
- OpenGL ES2 support. Can build against Qt5 GLES2 version now
- XV support for Qt5
- More audio format support, e.g. sample format, channels.
- Fix H.264 decoding error for the beginning frames.
- Fix audio decoding error if packet should be decoded multiple times. WMA audio.
- Save video captures to system Picture directory
What is new in version 1.2.2:
- Audio resampler using swresample
- Play speed control
- Audio format
- Play good with audio that noise before(mp3, ...)
- init and deinit FFmpeg only when needed
- Component id accessed by symbol
- mms support
What is new in version 1.1.9:
- Add network interrupt callback. Thanks Vito vcovito
- QtAV and FFmpeg runtime version check
- Add factory model to manager the components. Currently used in ImageConverter
- MSVC support
- Seek bug fix: some times blocked
- qmake: no additional arguments required(if source dir is writable)
- Add 2 graphics item renderer examples
- GDI+ renderer support
- Start to use script to create new classes
What is new in version 1.1.8:
- LGPL version 2.1
- Better Qt5 support
- Better synchronisation and seeking
- Crash fixed when getting stream info
- Crash fixed when replaying a music
- Drag & drop, simple internal gui and internal event filter
- Videowall works better
Requirements:
- Qt
- FFmpeg
- PortAudio 19
評論沒有發現