QtAVPlayer
QtAVPlayer copied to clipboard
Free and open-source Qt Media Player library based on FFmpeg, for Linux, Windows, macOS, iOS and Android.
Hi, First, thanks for sharing your code. It's very appreciated. In digiKam, we would use the ffmpeg backend to play audio and video as the GStreamer backend from Qt5Multimedia is...
QT_AVPLAYER_NO_HWDEVICE=1 ./qml_video.app/Contents/MacOS/qml_video ~/Downloads/SMTHMP05006_JUNGLE.mp4 "sws_flags=neighbor;split=4[x1][x2][x3][x4];[x1]format=yuv444p,scale[y1];[x2]format=yuv422p10le,waveform=intensity=0.1:mode=column:mirror=1:c=1:f=0:graticule=green:flags=numbers+dots:scale=0[z2];[z2][y1]scale2ref[y2][y1];[x3]format=yuv422p10le, split=10[b0][b1][b2][b3][b4][b5][b6][b7][b8][b9]; [b0]crop=iw/10:ih:(iw/10)*0:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-1))*pow(2\,1)[b0c]; [b1]crop=iw/10:ih:(iw/10)*1:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-2))*pow(2\,2)[b1c]; [b2]crop=iw/10:ih:(iw/10)*2:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-3))*pow(2\,3)[b2c]; [b3]crop=iw/10:ih:(iw/10)*3:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-4))*pow(2\,4)[b3c]; [b4]crop=iw/10:ih:(iw/10)*4:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-5))*pow(2\,5)[b4c]; [b5]crop=iw/10:ih:(iw/10)*5:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-6))*pow(2\,6)[b5c]; [b6]crop=iw/10:ih:(iw/10)*6:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-7))*pow(2\,7)[b6c]; [b7]crop=iw/10:ih:(iw/10)*7:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-8))*pow(2\,8)[b7c]; [b8]crop=iw/10:ih:(iw/10)*8:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-9))*pow(2\,9)[b8c]; [b9]crop=iw/10:ih:(iw/10)*9:0,lut=c0=pow(2\,10-1):c1=pow(2\,10-1):c2=pow(2\,10-1):c0=bitand(val\,pow(2\,10-10))*pow(2\,10)[b9c]; [b0c][b1c][b2c][b3c][b4c][b5c][b6c][b7c][b8c][b9c]hstack=10,format=yuv444p,drawgrid=w=iw/10:h=ih:t=2:[email protected][z3];[z3][y1]scale2ref[y3][y1];[x4]format=yuv422p10le,vectorscope=i=0.1:mode=3:envelope=0:colorspace=1:graticule=green:flags=name,pad=ih*1.48148:ih:(ow-iw)/2:(oh-ih)/2[z4];[z4][y1]scale2ref[y4][y1];[y1][y2][y3][y4]xstack=fill=slategray:inputs=4:layout=0_0|w0_0|0_h0|w0_h0|0_h0+h1|w0_h0+h1,format=rgb24"
Qt 6.4.3 and Qt 6.5.2, on iOS devices, real devices: Decoding works fine, decoded frames are AV_PIX_FMT_VIDEOTOOLBOX. When sending to display using videoSink->setVideoFrame(), they are redeclared (not converted) to NV12...
In #273 you explain the process between decoding and rendering clearly: > Let me explain how "everything" works: > > ffmpeg decodes a source using hardware acceleration and puts data...
Ocorre um erro ao compilar o QtAVPlayer no Qt 6.7.1 ``` /qcine/utils/QtAVPlayer/qavvideoframe.cpp:232:13: error: ‘quint64 PlanarVideoBuffer::textureHandle(int) const’ marked ‘override’, but does not override 232 | quint64 textureHandle(int plane) const override |...
When looking through qtmultimedia changes update below hints for possible differences with Ffmpeg 7 in hw accelerated decoding and rendering: https://codereview.qt-project.org/c/qt/qtmultimedia/+/560858 > Old FFmpeg versions expose supported hw formats in...