Free and open-source Qt Media Player library based on FFmpeg, for Linux, Windows, macOS, iOS and Android.

Joined May 2026
Photos and videos
QAVPlayer can write streams directly to file: p->setOutput(file) But also it can combine streams from different sources, and write them to one file. examples/muxer$ ./muxer -f v4l2 -i /dev/video0 -f pulse -i default output.mkv
1
Interesting that yuvj420p is still not supported by vdpau in #FFMpeg but the fix is quite simple.
1
3
Nobody requested but finally implemented hw device for filters, and now possible to use vaapi -> scale_vaapi, or h264_cuvid -> scale_cuda: player->setInputVideoCodec("h264_cuvid"); player->setFilter("scale_cuda=1920:1080");
7
Have 2 posts in LinkedIn about QtAVPlayer features, encoding multiple streams to one file and OpenGL Widget to render D3D11 textures. Watching which post wins in number of impressions: 370 vs 350 - so muxing of many sources rules now.
13
We had feature request from 2022 to build QML GUI example. And when it has been landed few months ago, it exposed many bugs related to changing source, seeking audio, changing streams, disabling streams etc. And still shows many issues. Noted the lesson...
10
Many years I've been using `QT -= gui` on CI, but suddenly somehow figured out that `-platform offscreen` should be used.
10
player->progress(videoStream).fps() shows how the player behaved, if it is expected fps, means demuxing, decoding is good enough.
9
Enable logging sometimes helps to debug: export QT_LOGGING_RULES="qt.QtAVPlayer.debug=true"
8
Not sure should we add API to set hwaccel. Like either cuda, d3d12va or vaapi. Hold on, d3d12va or vaapi? Is it not platform based?
9
Ok, no scale_vdpau, but maybe for macOS there is scale_videotoolbox? Oh scale_vt
8
QTest accepts names of tests passed as some arguments: $ ./tst_qavdemuxer videoCodecs
8
Added #CUDA support and figured out perf is worse than #libx264. Because the frames were implicitly converted to yuv420p. This bug is hard to cover by tests. So idea to be tolerated to _not_ fail on unexpected cases does not sound nice anymore.
8
For vaapi there is scale_vaapi. For d3d11 there is scale_d3d11, but why there is nothing for vdpau? #FFmpeg
9
Still no idea what is QT_BEGIN_NAMESPACE for
9
#Qt uses private implementation placed in *_p.h with a warning about API could be changed at any time. The same idea was added to #QtAVPlayer and many interesting features are hidden under-hood that are not supposed to be used directly in apps.
11
Still trying to figure out what is the best idea either to return pointers to AVFormatContext or AVCodecContext to users or make wrapper that provides getter without including #FFmpeg headers. For me it is more convenient to return FFmpeg internals, but?
11
Always respected yuv420p: Stream #0:0: Video: h264 (High), yuv420p(progressive rock)
12
Need some time to accept idea that the libx264 encoder does not scale the frames. #FFmpeg uses scale filter implicitly when requesting the size: $ ffmpeg .. -s 380x200
12
At #Qt we had discussion that users don't need tools, they need magic button after clicking everything works. Nobody needs media player without hw rendering or smooth audio. This is why QAVAudioOutput is introduced together with converting to QVideoFrame to be rendered in QRhi.
12