QtAV::Widgets::registerRenderers()
and QT += avwidgets
is not requred now.OpenGLVideo.beforeRendering/afterRendering
AVPlayer.stoppedAt
signalsetTimeRange()
started
is emittedload()
. Now no reload in play()
MediaPlayer/Video.audioBackends
propertyVideoOutput.mapTo/FromXXX
between source frame and itemMediaPlayer.startPosition/stopPotion
VideoShader API is not stable now because I’m lack of shader experience.
A custom VideoShader
can be used through OpenGLVideo.setUserShader(VideoShader*)
. You can access OpenGLVideo
through VideoRenderer.opengl()
and GLSLFilter.opengl()
.
VideoShaderObject
and DynamicShaderObject
take advantages of QObject meta property and dynamic property features. It’s possible to dynamically edit and apply shader code when rendering using DynamicShaderObject
. DynamicShaderObject
is also used in QML as VideoShader
type.
Examples: shaders, glsl filter
A QML AudioFilter/VideoFilter
can be type of AVFilter
and UserFilter
. VideoFilter
can also be type of VideoFilter .GLSLFilter
. AVFilter
is the default type. The supported filters can be retrieved by supportedAVFilters
property. The avfilter
property is avfilter options.
A VideoFilter
can set a VideoShader
as it’s shader
property to use custom shader when GLSLFilter
type is enabled.
A VideoFilter
can be installed to MediaPlayer
/AVPlayer
or VideoOutput2
as it’s target. Only 1 target can be installed to for 1 filter. You can use an array of filters as a filter chain for MediaPlayer.videoFilters
/AVPlayer.videoFilters
and VideoOutput2.filters
import QtAV 1.7
...
VideoFilter {
id: vf
avfilter: "negate"
...
}
MediaPlayer {
...
videoFilters: [vf]
}
Examples: avfilter, glsl filter