STEPS TO REPRODUCE 1. Tools=>Create video slideshow... 2. Selection method = Albums 3. Select an album with jpg files 4. Confirm list of jpg files 5. Number of frames = 125 Video Standard = PAL - 25fps Video Type = HDTV Bit Rate = 1200k Codec = H.264/AVC No effects or transitions 6. Container format = MP4 OBSERVED RESULT Encoding appears to proceed OK but generated mp4 file does not play in VLC media player and cannot be loaded into Kdenlive EXPECTED RESULT Playable mp4 slideshow SOFTWARE/OS VERSIONS KDE Plasma Version: 5.27.6 KDE Frameworks Version: 5.108.0 Qt Version: 5.15.10 Graphics Platform: Wayland Graphics Processor: AMD CEDAR
Slideshow video encoding currently only works with FFmpeg4. Maik
HI Maik, The video slide show tool is the last part of digiKam which depend of qtav API, when we switch definitively to Qt6. QtMultimedia version 6 do not allows to encode frame by frame from Image. Qt6 API have this kind of feature, but this have been dropped in Qt6. I see a report in Qt bugzilla about missing API, but Qt team report that it's not a priority to restore the ful API in Qt6. So, we needs to found a C++ API based on ffmpeg to do the job in-place of QtAv. Also, the current implementation do not allow to set audio track on the video. I found this interesting project on github : https://github.com/apc-llc/moviemaker-cpp I use also Numa and GTK3 API, but i'm sure that we can drop this in favor to Qt API.
Hi Gilles, The audio player in the presentation tool is also still based on QtAV. Maik
Right, i forget this. It can be ported to Qt6Multimedia easily... Gilles
Maik, I ported the Presentation tool to Qt6Multimedia to play sound. The track preview read files, but without no sound. Can you reproduce ? Gilles
Yes, I can reproduce. Maik
add audio output to media player in the presentations tool: https://invent.kde.org/graphics/digikam/-/commit/49be815d5403ba84651b674004ffb09c142ee299 Maik
Git commit 44da06a0b008eb4030ae59e57c11a1341c157c8c by Gilles Caulier. Committed on 13/12/2023 at 11:53. Pushed by cgilles into branch 'master'. Remove ENABLE_QTMULTIMEDIA cmake option. Auto-detect automatically the mediaplyer to use : Qt5:QtAV | Qt6:QtMultimedia Separate ffmpeg rules in a separate cmake script Disable VideoSlideshow tool with Qt6: It needs to be ported to FFmpeg API instead QtAV Note: now with Qt6, QtAV codes are not compiled at all. Related: bug 448681 M +0 -1 Mainpage.dox M +0 -1 bootstrap.linux M +0 -1 bootstrap.tarball M +0 -1 bootstrap.vcpkg M +1 -0 core/CMakeLists.txt M +9 -1 core/app/DigikamCoreTarget.cmake A +107 -0 core/cmake/rules/RulesFFmpeg.cmake M +269 -364 core/cmake/rules/RulesMediaPlayer.cmake M +0 -1 core/cmake/rules/RulesOptionDefinitions.cmake M +10 -2 core/dplugins/generic/tools/CMakeLists.txt M +12 -12 core/libs/video/CMakeLists.txt R +0 -0 core/libs/video/ffmpegconfighelper.cpp [from: core/libs/video/qtav/ffmpeg/ffmpegconfighelper.cpp - 100% similarity] R +0 -0 core/libs/video/ffmpegconfighelper.h [from: core/libs/video/qtav/ffmpeg/ffmpegconfighelper.h - 100% similarity] M +1 -1 core/tests/CMakeLists.txt M +0 -1 project/bundles/appimage/03-build-digikam.sh M +1 -1 project/bundles/macports/03-build-digikam.sh https://invent.kde.org/graphics/digikam/-/commit/44da06a0b008eb4030ae59e57c11a1341c157c8c
A new link to a possible implementation to encode QIMge with ffmpeg API : https://stackoverflow.com/questions/37861764/creating-gif-from-qimages-with-ffmpeg Gilles
Another interresting code : https://github.com/liuyanghejerry/encoding Gilles
Git commit 5c0ce6aa787931b22bde21c50c6fa492883ae564 by Gilles Caulier. Committed on 03/01/2024 at 16:56. Pushed by cgilles into branch 'master'. Add ffmpeg CLI binary finder for Video Slideshow. Prepare to port the plugin to use the FFmpeg CLI tool instead QtAV (Qt6Multimedia cannot be used here). NOTE: VideoSlideshow plugin is the last part of the Qt6 port of digiKam using QtAV. Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +1 -1 core/dplugins/generic/tools/videoslideshow/videoslideshowplugin.cpp M +1 -0 core/libs/video/CMakeLists.txt A +43 -0 core/libs/video/manager/ffmpegbinary.cpp [License: GPL(v2.0+)] A +38 -0 core/libs/video/manager/ffmpegbinary.h [License: GPL(v2.0+)] https://invent.kde.org/graphics/digikam/-/commit/5c0ce6aa787931b22bde21c50c6fa492883ae564
Git commit 420608c891d65372095db103bf8e795ffb289359 by Gilles Caulier. Committed on 03/01/2024 at 18:16. Pushed by cgilles into branch 'master'. restore previous videoslideshow settings including audio track support Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +173 -10 core/libs/video/manager/qtav/vidslidetask.cpp M +1 -1 core/libs/video/manager/qtav/vidslidetask.h M +5 -1 core/libs/video/manager/vidslidesettings.cpp M +3 -1 core/libs/video/manager/vidslidesettings.h https://invent.kde.org/graphics/digikam/-/commit/420608c891d65372095db103bf8e795ffb289359
Git commit 4ff9e0d9fedf3189f62cbd3f0de64657bcc64116 by Gilles Caulier. Committed on 03/01/2024 at 23:34. Pushed by cgilles into branch 'master'. add ffmpeg path tp the settings Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +1 -0 core/libs/video/manager/vidslidesettings.h https://invent.kde.org/graphics/digikam/-/commit/4ff9e0d9fedf3189f62cbd3f0de64657bcc64116
Git commit 982a06b8e1973a8447cac2ab92503f20a3f4fdfc by Gilles Caulier. Committed on 03/01/2024 at 23:46. Pushed by cgilles into branch 'master'. add FFMpeg binary search in the wizard Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +12 -9 core/dplugins/generic/tools/videoslideshow/wizard/vidslidefinalpage.cpp M +45 -9 core/dplugins/generic/tools/videoslideshow/wizard/vidslideintropage.cpp M +3 -8 core/dplugins/generic/tools/videoslideshow/wizard/vidslideoutputpage.cpp M +3 -8 core/dplugins/generic/tools/videoslideshow/wizard/vidslidevideopage.cpp https://invent.kde.org/graphics/digikam/-/commit/982a06b8e1973a8447cac2ab92503f20a3f4fdfc
Git commit 2eb84eeb93994d93c4b3f4bdb001cba2fba67fb1 by Gilles Caulier. Committed on 04/01/2024 at 11:26. Pushed by cgilles into branch 'master'. Complete isolation of QtAv code. Tested with Qt5 and Qt5. Tested with and without mediaplayer cmake option. The linking problem with QtAv was the auto reccursive parsing of header file in whole source repository. QtAv was always parsed and add to the compilation rules. Not qtav and qtmm are removed from the parse and add at the demand when necessary. Continue to port VideoSlideshw to FFmpeg CLI tool to drop QtAV (Qt5 and Qt6). Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +6 -2 core/CMakeLists.txt M +27 -0 core/cmake/rules/RulesMediaPlayer.cmake M +1 -1 core/dplugins/generic/tools/CMakeLists.txt M +3 -4 core/dplugins/generic/tools/videoslideshow/wizard/vidslidefinalpage.cpp M +6 -8 core/libs/video/CMakeLists.txt https://invent.kde.org/graphics/digikam/-/commit/2eb84eeb93994d93c4b3f4bdb001cba2fba67fb1
Git commit 002af12bc3aad5cdfff34f2e6dd4eed71310df66 by Gilles Caulier. Committed on 04/01/2024 at 13:42. Pushed by cgilles into branch 'master'. add C++17 support use QString instead QUrl for the video output path Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +5 -9 core/dplugins/generic/tools/videoslideshow/wizard/vidslidealbumspage.cpp M +8 -15 core/dplugins/generic/tools/videoslideshow/wizard/vidslidefinalpage.cpp M +4 -6 core/dplugins/generic/tools/videoslideshow/wizard/vidslideimagespage.cpp M +9 -15 core/dplugins/generic/tools/videoslideshow/wizard/vidslideoutputpage.cpp M +12 -24 core/dplugins/generic/tools/videoslideshow/wizard/vidslidevideopage.cpp M +11 -21 core/dplugins/generic/tools/videoslideshow/wizard/vidslidewizard.cpp M +2 -2 core/libs/video/manager/vidslidesettings.cpp M +1 -1 core/libs/video/manager/vidslidesettings.h https://invent.kde.org/graphics/digikam/-/commit/002af12bc3aad5cdfff34f2e6dd4eed71310df66
Git commit 58ece9388d0a3ef6ba90db979902ba7cbf2a9b84 by Gilles Caulier. Committed on 04/01/2024 at 15:07. Pushed by cgilles into branch 'master'. new video slideshow task to encode frame as temporary JPEG files. This JPEG stream will be pipe to the FFmpeg cli tool to encode as video. M +2 -3 core/libs/video/CMakeLists.txt D +0 -452 core/libs/video/manager/qtav/vidslidetask.cpp A +184 -0 core/libs/video/manager/vidslidetask.cpp [License: GPL(v2.0+)] R +0 -0 core/libs/video/manager/vidslidetask.h [from: core/libs/video/manager/qtav/vidslidetask.h - 100% similarity] https://invent.kde.org/graphics/digikam/-/commit/58ece9388d0a3ef6ba90db979902ba7cbf2a9b84
Git commit ae723b3daa572b4fa26fbe820b4f9b3131979b6c by Gilles Caulier. Committed on 04/01/2024 at 15:16. Pushed by cgilles into branch 'master'. start the encoding thread to generate temprary JPEG frame before encode video with FFMPEG Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +13 -9 core/dplugins/generic/tools/videoslideshow/wizard/vidslidefinalpage.cpp https://invent.kde.org/graphics/digikam/-/commit/ae723b3daa572b4fa26fbe820b4f9b3131979b6c
Git commit 7c0981484d4371bd1e5ff7db5da6785f9393f65b by Gilles Caulier. Committed on 04/01/2024 at 16:25. Pushed by cgilles into branch 'master'. Create a temporary directory to host JPEG frames Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +1 -1 core/dplugins/generic/tools/CMakeLists.txt M +23 -8 core/libs/video/manager/vidslidetask.cpp https://invent.kde.org/graphics/digikam/-/commit/7c0981484d4371bd1e5ff7db5da6785f9393f65b
Git commit dd325854d3021dacb139d387bd37544bf89d3df8 by Gilles Caulier. Committed on 05/01/2024 at 14:45. Pushed by cgilles into branch 'master'. First version for testing of the new video slideshow tool based on FFmpeg CLI tool to encode images as video. A small demo is available here: https://drive.google.com/file/d/1posBo2rqkatU7N6qkbZWGBbOELsUGdgg/view?usp=sharing It still plenty of features to restore, as to adjust the codecs, the size, the frame rate, the format. The audio track must be supported too. Currently the temporary directory containing frames to encode is not yet deleted at end, it's for debuging. It's planed to remove temp dir when all features will be completed. Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +1 -3 core/dplugins/generic/tools/CMakeLists.txt M +1 -1 core/dplugins/generic/tools/videoslideshow/wizard/vidslidefinalpage.cpp M +6 -6 core/libs/video/manager/ffmpeglauncher.cpp M +17 -4 core/libs/video/manager/vidslidethread.cpp M +15 -1 core/libs/video/manager/vidslidethread.h https://invent.kde.org/graphics/digikam/-/commit/dd325854d3021dacb139d387bd37544bf89d3df8
Git commit 90b508130131d470ef6051e0296d24f058bd85b1 by Gilles Caulier. Committed on 07/01/2024 at 12:20. Pushed by cgilles into branch 'master'. run the ffmpeg process in a separate thread to not block the GUI while encoding frames. Related: bug 425284, bug 427221, bug 139781, bug 462810, bug 448681 M +6 -1 core/libs/threads/processlauncher.cpp M +6 -2 core/libs/threads/processlauncher.h https://invent.kde.org/graphics/digikam/-/commit/90b508130131d470ef6051e0296d24f058bd85b1
In digiKam 8.3.0, Video Slide Show tool use FFmpeg CLI tool instead QtAv API.