How to create slide show using several photos, each image = several seconds

Started by Merinda, August 20, 2024, 07:55:06 PM

Previous topic - Next topic

Merinda

I use Avidemux Avidemux_2.8.1 VC++ 64bits on my PC and have some very basic skills. I want to create a small home video from photos (jpg and png) – essentially, a slide show, I don't need to "animate" the images – just a string of stills. Each picture should last for approximately 4 seconds, I'm OK with mp4 format. I will appreciate your advice about the easiest way to do this.
What I've figured out myself so far: if you put images in a separate folder, open any of them in avidemux and save as mp4, then all images from the folder are included but in the resulting video they fleet by at the speed of the sound:)).
Another option is saving each image as an mp4 (I guess other video formats can be OK, but I'm used to this one): setting the value of the still image function (video filters – transform) at 4 sec, saving it as an mp4 video, then "stringing along" the videos ("append", then again and again) in one mp4 file, then adding a sound track. It's just a bit tiresome. Is there an easier way?
Thanks in advance to all who reply!
You cannot view this attachment.

sark

#1
This is not an area where Avidemux excels. The recommended method is as you described, by creating multiple mp4's and concatenating. As you say, laborious. Though, a batch script could speed this up (sorry, can't help you with that).
Personally I use ffmpeg, but there are GUI based slideshow creators available that will achieve your goal if you don't have ffmpeg installed.


Merinda

Thanks a lot. I guess ffmpeg is not for dummies like me. And can you recommend a free and easy slide show creator? Preferences: installable on PC (not browser-based) with Win, with an option of saving in a common video format like mp4 or a format that can be easily converted to it, without watermarks.

sark

Assuming you have Windows 10, the easiest way is with Windows Movie Maker.
Take a look at the video and tutorial linked below. All pretty straight forward for a beginner, and no need to download anything.

Video:

https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://m.youtube.com/watch%3Fv%3DNWSomBHg5GU&ved=2ahUKEwiZ2YvUx4WIAxVcUkEAHSthOgAQwqsBegQIBBAG&usg=AOvVaw19aztr4F__QCBFEO1O73o_

Tutorial:

https://www.instructables.com/Creating-a-Slideshow-With-Windows-Movie-Maker/

Merinda

Thanks. No, Win 7. I found a Windows Essentials 2012 installation file (https://archive.org/details/wlsetup-all_201802) but cannot install Movie Maker only - seems like the installation of the whole package is required since when I select only Movie Maker, after a while a get this messageYou cannot view this attachment.. And I don't want the whole package.

sark

I downloaded the Win 7 Movie Maker package from the link below and had no issues only installing Movie Maker (and Photo Maker) on a Win 7 (Pro) system.

Whilst the process differs slightly to the Win 10 version tutorials I linked, it is pretty similar and straight forward, and the results are very good.

https://www.videohelp.com/software/Windows-Movie-Maker

eumagga0x2a

The script below should setup a filter chain for a primitive slide show without transitions with a uniform, configurable duration for each picture. The script presumes 25 fps frame rate (the default value when loading pictures in Avidemux).

Load / append all pictures in desired order manually
Select video encoder (i.e. not "Copy") and muxer (output format)
Run the script via "File" --> "Project Script" --> "Run project..."
If no error occurs, save (export) video as usual.

#PY  <- Needed to identify #
#--automatically built--

adm = Avidemux()
ed = Editor()
ui = Gui()

nbPics = ed.nbSegments()

if not nbPics:
    ui.displayError("Oops", "No pictures loaded")
    return

if adm.getFps1000() != 25000:
    ui.displayError("Oops", "This script supports frame rate of 25 fps only")
    return

nbVids = ed.nbVideos()

valid_extensions = ["JPEG","jpeg","JPG","jpg","PNG","png","BMP","bmp"]

for vid in range(nbVids):
    vidname = basename(ed.getRefVideoName(vid))
    if len(vidname) < 5:
        ui.displayError("Oops", "The filename of picture " + str(vid) + " \"" + vidname + "\" is too short")
        return
    vidext = vidname[-5:]
    match = 0
    for ext in valid_extensions:
        check_range = len(ext) + 1
        if vidext[-check_range:] == "." + ext:
            match = 1
            break
    if not match:
        ui.displayError("Oops", "Filename extension of picture \"" + vidname + "\" is not supported by this script")
        return

spin = DFInteger("Select duration in seconds each picture is shown", 1, 60)
spin.value = 4
dia = DialogFactory("Configuration")
dia.addControl(spin)

if not dia.show():
    return

start_time_ms = 0
duration_ms = spin.value * 1000
# this constitutes a bug in the StillImage video filter, actual_duration_ms should be equal duration_ms
actual_duration_ms = duration_ms + 40

for pic in range(nbPics):
    adm.addVideoFilter("stillimage", "start=" + str(start_time_ms), "duration=" + str(duration_ms))
    start_time_ms += actual_duration_ms

ui.displayInfo("Success", "Filter setup for slideshow completed")

Change the filename extension of the attached script from ".txt" to ".py".

eumagga0x2a

I should note that the script has been tested working with the latest 2.8.2 git master. I recommend updating to the latest available 2.8.2 nightly build, at least for the reason of dozens of bugs incl. many crashes fixed since the last release.

Merinda

Thanks a lot. I'm afraid scripts are too clever for me. Anyway, I found a video editor with which I could make the slide show I want.