QtAV
QtAV copied to clipboard
digiKam : lag when playing some kind of video under Linux or Windows.
digiKam users have reported a playing start problem under Linux and Windows with some video type.
The report relevant is this one :
https://bugs.kde.org/show_bug.cgi?id=374355
The report have been updated with last digiKam 5.5.0 pre-release using current implementation from git/master. Look especially last comments from the file.
Any guidance to investigate will be welcome.
Gilles Caulier
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
It seems openal is not compiled on windows. The default audio renderer is xaudio2 for windows, which exists on win8 and later, for old system, you have to install xaudio2 driver http://sourceforge.net/projects/qtav/files/depends/DXSDK2010_XAudio2_redist.7z/download. The simplest solution is building with openal headers and providing openal32.dll in your app, if xaudio2 is not supported, openal will be used. If openal is not loaded, dsound is used, but dsound implementation has some bugs, for example repeating when playback is paused. I'm not sure why linux still can not play correctly. Do you have log?
Wang,
I think you mix subject here. The lag is not a problem about audio support. The audio support under Linux and Windows was been solved few days ago following your tips about OpenAl support to enable in QtAV.
https://github.com/wang-bin/QtAV/issues/834
I think the problem reported here from digiKam users about lags in video startup can be relevant of 2 points :
- 1/ the video widget used in digiKam. Currently we use the non OpenGL one. I'm sure that it's not optimum to render video stream.
- 2/ the ffmpeg codecs. Currently, under Linux, i use CentOS rpms as well, including only GPL2 codecs. Under Windows, the MXE ffmpeg rules to build codecs are also limited to GPL2.
Let's me here if my suggestions are right or not.
Thanks in advance
Gilles Caulier
If opengl is not used, only high resolution videos will be affected. ffmpeg license only affects whether you can play a video, not the performance. From this description https://bugs.kde.org/show_bug.cgi?id=374355#c13 I guess dsound is used. Tomorrow I can try your app. Now the log is preferred.
I ask for a runtime debug trace in bug #374355.
Do you want a QtAv configure/compilation trace with MXE ?
Gilles Caulier
Yes, that can help too
This is the MXE part of QtAv configuration stage for Windows 32 bits (64 bits version is mostly the same) :
-- Build files have been written to: /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build == Using MXE wrapper: /mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/bin/i686-w64-mingw32.shared-cmake == Skip using MXE toolchain: /mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared/share/cmake/mxe-conf.cmake Scanning dependencies of target ext_qtav [ 0%] Creating directories for 'ext_qtav' [ 0%] Performing download step (git clone) for 'ext_qtav' Cloning into 'ext_qtav'... Already on 'master' Your branch is up-to-date with 'origin/master'. Submodule 'contrib/capi' (https://github.com/wang-bin/capi.git) registered for path 'contrib/capi' Submodule 'contrib/uchardet' (https://github.com/BYVoid/uchardet.git) registered for path 'contrib/uchardet' Submodule 'tools/build_ffmpeg' (https://github.com/wang-bin/build_ffmpeg.git) registered for path 'tools/build_ffmpeg' Cloning into 'contrib/capi'... Submodule path 'contrib/capi': checked out '6a5f3006533b79aa57a3a54cf9df4442a356dd48' Cloning into 'contrib/uchardet'... Submodule path 'contrib/uchardet': checked out '016eb18437793fbdd31149e1fe9fd73df3430d0f' Cloning into 'tools/build_ffmpeg'... Submodule path 'tools/build_ffmpeg': checked out '428c16dc2edd575e8bdb838683a9b75f68eefe5a' [ 50%] No patch step for 'ext_qtav' [ 50%] No update step for 'ext_qtav' [ 50%] Performing configure step for 'ext_qtav' removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/Filter_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/SubtitleProcessor.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/QPainterRenderer_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AudioResampler_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AVCompat.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/PlayerSubtitle.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/mkid.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/singleton.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AudioOutputBackend.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/Frame_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AVDecoder_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/MediaIO_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/VideoShader_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/VideoRenderer_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AVEncoder_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/factory.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/prepost.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/OpenGLRendererBase_p.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private/AVOutput_p.h’ removed directory: ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/private’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVDemuxer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/QtAV.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioFormat.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/FilterContext.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoCapture.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVTranscoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/FrameReader.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/SurfaceInterop.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Subtitle.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioEncoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVDecoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVEncoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Geometry.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Packet.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/QPainterRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoFrame.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Filter.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/QtAV’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/dptr.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/LibAVFilter.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioResampler.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/EncodeFilter.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/FactoryDefine.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/version.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoFrameExtractor.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioDecoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/OpenGLVideo.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/GLSLFilter.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/MediaIO.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/QtAV_Global.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/ConvolutionShader.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoFormat.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVClock.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Statistics.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/Frame.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioFrame.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVError.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AudioOutput.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVPlayer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/OpenGLRendererBase.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoOutput.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoShaderObject.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/GeometryRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoEncoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/OpenGLWindowRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoDecoder.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/OpenGLTypes.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoShader.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVOutput.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/SubtitleFilter.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/VideoRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/AVMuxer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV/SubImage.h’ removed directory: ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAV’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/WidgetRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/GLWidgetRenderer2.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/global.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/QOpenGLWidget.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/version.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/OpenGLWidgetRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/GraphicsItemRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/GLWidgetRenderer.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/QtAVWidgets.h’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/QtAVWidgets’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets/VideoPreviewWidget.h’ removed directory: ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/include/QtAVWidgets’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/lib/libQtAV1.a’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/lib/libQtAVWidgets1.a’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/bin/QtAV1.dll’ removed ‘/mnt/devel/GIT/5.x/project/bundles/mxe/build.win32/usr/i686-w64-mingw32.shared//qt5/bin/QtAVWidgets1.dll’ Info: creating stash file /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/.qmake.stash Project MESSAGE: BUILD_DIR=/mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build Project MESSAGE: MAKEFILE_GENERATOR=MINGW Info: creating cache file /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/.qmake.cache Project MESSAGE: target arch: x86 Project MESSAGE: target arch features: Project MESSAGE: To disable config tests, you can use 1 of the following methods Project MESSAGE: 1. create '.qmake.conf' in the root source dir, add 'CONFIG += no_config_tests'(Qt5) Project MESSAGE: 2. pass 'CONFIG += no_config_tests' or '-config no_config_tests' to qmake Project MESSAGE: 3. add 'CONFIG += no_config_tests' in /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/user.conf Project MESSAGE: To manually set a config test result to true, disable config tests and enable config_name like above Checking for avutil... yes Checking for avcodec... yes Checking for avformat... yes Checking for swscale... yes Project MESSAGE: checking for optional features... Checking for swresample... yes Checking for avresample... yes Checking for avfilter... yes Checking for avdevice... yes Checking for sse4_1... yes Checking for openal... yes Checking for libass... yes Checking for uchardet... no Checking for dx... no Checking for xaudio2... yes Checking for direct2d... yes Checking for dxva... yes Checking for d3d11va... no Checking for dsound... yes Checking for gdiplus... no Project MESSAGE: To recheck the dependencies, delete '.qmake.cache' in the root of build dir, run qmake with argument 'CONFIG+=recheck' or '-config recheck' [ 50%] Performing build step for 'ext_qtav' Project MESSAGE: target: /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/lib_win_x86/QtAV Project MESSAGE: target: /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/lib_win_x86/QtAV Project MESSAGE: target: /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/lib_win_x86/install_sdk Project MESSAGE: creating script for module QtAV ... Project MESSAGE: run /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/sdk_install.sh to install QtAV as a Qt module Project MESSAGE: creating script for module QtAVWidgets ... Project MESSAGE: run /mnt/devel/GIT/5.x/project/bundles/mxe/temp.build/ext_qtav/ext_qtav-prefix/src/ext_qtav/build/sdk_install.sh to install QtAVWidgets as a Qt module WARNING: target.path is not defined: install target not created ...
And yes, OpenAL is installed by MXE previously, is detected, but not only. xaudio2, and dsound also...
Gilles Caulier
I don't see lag in my test. But there is an error when switching to a new video from playing video https://bugs.kde.org/show_bug.cgi?id=374355#c19
yes. sound like the ffmpeg codec need a latency to be re-used for another stream to play.
Gilles Caulier
No. How do you switch video?
Like this : https://cgit.kde.org/digikam.git/tree/app/views/mediaplayerview.cpp#n415
stop(); setFile(); play().
It's simple. It miss something ?
Gilles Caulier
stop() will interrupt current io and player will get an io error.
We must not use stop() here ? We must use another method ? This is what you mean ?
Gilles Caulier
No error check
Any progress on the issue ?
I'm still observing a lag when a video starts playing within Digikam (mov, mp4).
I've updated to openSUSE Leap 15 and have the following versions:
- digikam-5.9.0-lp150.1.3.x86_64
- ffmpeg-3.4.2-lp150.3.1.x86_64
- libQt5Core5-5.9.4-lp150.4.8.x86_64 (Qt 5.9.4)
- plasma5-workspace-5.12.5-lp150.1.1.x86_64
Mediainfo output of matching videos:
- MOV:
General
Complete name : P1150322.MOV
Format : MPEG-4
Format profile : QuickTime
Codec ID : qt 2007.09.04 (qt /pana)
File size : 171 MiB
Duration : 54 s 0 ms
Overall bit rate mode : Variable
Overall bit rate : 26.5 Mb/s
Encoded date : UTC 2018-06-02 12:34:26
Tagged date : UTC 2018-06-02 12:34:26
Writing library : pana
IsTruncated : Yes
Video
ID : 1
Format : JPEG
Codec ID : jpeg
Duration : 54 s 0 ms
Bit rate mode : Variable
Bit rate : 26.0 Mb/s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 30.000 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.941
Stream size : 168 MiB (98%)
Language : English
Encoded date : UTC 2018-06-02 12:34:26
Tagged date : UTC 2018-06-02 12:34:26
Audio
ID : 2
Format : PCM
Format settings : Big / Signed
Codec ID : twos
Duration : 54 s 0 ms
Bit rate mode : Constant
Bit rate : 256 kb/s
Channel(s) : 1 channel
Sampling rate : 16.0 kHz
Bit depth : 16 bits
Stream size : 1.65 MiB (1%)
Language : English
Encoded date : UTC 2018-06-02 12:34:26
Tagged date : UTC 2018-06-02 12:34:26
- MP4 (from Android phone):
General
Complete name : VID_20180602_173011.mp4
Format : MPEG-4
Format profile : Base Media / Version 2
Codec ID : mp42 (isom/mp42)
File size : 4.77 MiB
Duration : 3 s 93 ms
Overall bit rate : 12.9 Mb/s
Encoded date : UTC 2018-06-02 15:30:15
Tagged date : UTC 2018-06-02 15:30:15
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Baseline@L4
Format settings : 1 Ref Frames
Format settings, CABAC : No
Format settings, ReFrames : 1 frame
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 3 s 1 ms
Bit rate : 12.2 Mb/s
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate mode : Variable
Frame rate : 30.328 FPS
Minimum frame rate : 30.141 FPS
Maximum frame rate : 30.477 FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.193
Stream size : 4.35 MiB (91%)
Title : VideoHandle
Language : English
Encoded date : UTC 2018-06-02 15:30:15
Tagged date : UTC 2018-06-02 15:30:15
mdhd_Duration : 3001
Audio
ID : 2
Format : AAC
Format/Info : Advanced Audio Codec
Format profile : LC
Codec ID : mp4a-40-2
Duration : 3 s 93 ms
Source duration : 3 s 101 ms
Source_Duration_FirstFrame : 8 ms
Bit rate mode : Constant
Bit rate : 96.0 kb/s
Channel(s) : 1 channel
Channel positions : Front: C
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 36.4 KiB (1%)
Source stream size : 36.4 KiB (1%)
Title : SoundHandle
Language : English
Encoded date : UTC 2018-06-02 15:30:15
Tagged date : UTC 2018-06-02 15:30:15
mdhd_Duration : 3093
In fact, I don't remember any video so far that played properly since quite some time. The problem already existed in former versions of openSUSE.
There doesn't seem to be any QtAv related package installed or available on this distro. Is this dependency compiled in Digikam somehow ?
@wang-bin as I understand, @cgilles needs guidance as to what order to call the APIs to prevent the switching problem.
What's about to use digiKam 6.0.0 pre release AppImage bundle instead the OpenSuse package ?
https://files.kde.org/digikam/
AppImage do not install file and can be used in parallel than official RPM. The bundle do not use system based lib excepted libc of course.
Gilles Caulier
I've now tried with the digikam-6.0.0-x86-64.appimage and the lag at the beginning of the playback is still happening.
Same here. Win 10, digiKam 6.1.0,
Build date: Apr 15 2019 (target: RelWithDebInfo)
Rev.: 33917d60ecad37ad46ef9cea83db28c2f058cc13
Windows 10, digiKam 7.2.0.
Unfortunately, this issue is still present. I can confirm this too, particularly with .mov. Lags and continues to do so. Hopefully it can be fixed.
Mac OS, digiKam 7.6.0 I can also confirm video playback lag is still present. Just like @javaskript wrote it seems to be more problematic with our .mov files compared to mp4 files.
Same here, Linux with DK 7.6 AppImage. Basically all videos, be it MOV or MP4 from Canon cameras or Android phones are lagging
I can confirm, the audio stream is the problem. When you disconnect audio in the OS, the video plays smoothly.
Hi,
The problem in digiKam is the lack of settings to tune backend to use for video and audio playback. The default ones are used as well. I plan to add the relevant code in digiKam to fix the problem.
Also, you must know that QtAV is not maintained since February 2022. We (digiKam team and me personalty) have backported all QtAV core codes in digiKam 8.x and maintain/review/fix these codes for the digiKam uses (and only these ones).
See the README here : https://invent.kde.org/graphics/digikam/-/tree/master/core/libs/video/qtav
Best
Gilles Caulier
Hi @cgilles, I got your changes in the 7.7 release now. The videos play fine now, without lagging in the internal viewer - I guess because sound is now disabled? It is at least an improvement ;)
The QtAV player works with sound, but if I understand you right, you cannot use their current libs, but needed to fork their code and maintain it seperately?
Do you have any idea how to move forward in allowing digiKams internal player to play video sound as well? Maybe there is even some tweaking users can do themselves or so?
Thanks and best regards!
Hi,
The QtAV code have been ported to digiKam core for 8.X releases. Code is ported to Qt6 and partially to ffmpeg 5. For this last one, we have lag and freeze to solve. ffmpeg 4 still the prefered backend to use with QtAv.
In parallel, QtMultimedia from Qt6 will be supported in digiKam 8.x, as ffmpeg backend will be supported. If Qt6Multimedia will work fine, we will replace QtAv as well.
Voilà the plant for the digiKam 8.x Qt6. Note that digiKam 8.x still compatible with Qt5, and in this case QtAv must be used.
Gilles Caulier
Hi, Thanks,
So if I understand you right, the current version 7 (with Qt5, QtAv, ffmpeg 4) is being developed as version 8 (with Qt6, QtMultimedia, ffmpeg 5). I just don't understand why lagging happens in any of these versions - since playing a video should work easily, both with the old and new Qt libs.
However, for now we can use the External player function ("Open with..." and then just F4) - this is an easy workaround I wasn't aware of.
Good luck for your ongoing tasks!
Hi,
Most of my videos aren't played well (choppy) in Digikam for years (actually I have the 8.0.0 version on my Windows 10) and I always use an external player to play my videos from Digikam.
Just to be sure to have well understood: it is a known issue and it will be resolved in the next versions?
Thanks :)
Same situation on Linux. Either using native installation or AppImage, but for me videos never ever played in Digikam without using an external player. Just stumbled over this bug report and am therefore interested in any progress on this issue. Currently 8.1.0 AppImage, which seems to use Qt5.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Please do not use bountysource. Many devs have had trouble getting paid there. You can check out this lemmy community as an alternative https://lemmy.ml/c/bugbounties
For statements from devs who have been unable to cash out from bountysource see: https://github.com/bountysource/core/issues
Hi,
Most of my videos aren't played well (choppy) in Digikam for years (actually I have the 8.0.0 version on my Windows 10) and I always use an external player to play my videos from Digikam.
Just to be sure to have well understood: it is a known issue and it will be resolved in the next versions?
Thanks :)
Hi,
It seems resolved with Digikam 8.3.0 and QT6.6.0 👍