[a / b / c / d / e / f / g / gif / h / hr / k / m / o / p / s / t / u / v / vg / vm / vmg / vr / vrpg / vst / w / wg] [i / ic] [r9k / s4s / vip] [cm / hm / lgbt / y] [3 / aco / adv / an / bant / biz / cgl / ck / co / diy / fa / fit / gd / hc / his / int / jp / lit / mlp / mu / n / news / out / po / pol / pw / qst / sci / soc / sp / tg / toy / trv / tv / vp / vt / wsg / wsr / x / xs] [Settings] [Search] [Mobile] [Home]
Board
Settings Mobile Home
/g/ - Technology


Thread archived.
You cannot reply anymore.


[Advertise on 4chan]


File: ANIMA_bface_bad_00015_.png (1.15 MB, 832x1216)
1.15 MB PNG
The ai says it doesn't really exist. Very simple:

1. A sound track - a song, I have in .wav or .mp3, but whatever is necessary
2. a list of images
3. a precise time of displaying them while the song is playing
4. without any loss to the quality of the images
5. but also without being much more than the combination of the files
6. Note, there are NO TRANSITIONS. It's just not needed

My personal use case is memorization. The song is memorized, it relates to visibles, I want the images to show at the same time.

Obviously, lectures would be another application.

In case you are wondering, powerpoints are trash for this.

The reason I made a thread is it seems ridiculous this doesn't exist. You can't find this anywhere.

A *proper* editor will let you adjust, and replay, before committing. Because podcasts are really crude, it doesn't have to line up, for those. But for a music aligned slideshow, it does.

As far as I can tell no video format really can do this, which seems odd to me, but I'm not into movies or tv or any of that, as you may have guessed.
>>
File: 1641643391468.jpg (307 KB, 662x812)
307 KB JPG
>>>/r/
>>
>>108947625
I sure hope you're not sacrificing those cats for the slideshow format to exist. There are surely more peaceable ways to switch timelines.
>>
>>108947602
kdenlive can render to whatever the fuck video format you want it to, or write a python script that opens a kdenlive project file and does ad-hoc playback
>>
>>108948196
>mp3, 2-5 minutes long (tops would be 15)
>some 10-30 jpg/png s (tops would be 150)
>need to sync it, exactly, because it sucks otherwise
>needs to not have any compression
>need to be about the same size as the above items themselves.

Feel free to suggest which one.

>script

Yes, I know how to program, programs aren't really file formats, if you know what I mean. LIke if you want to reddit yourself out of the question, ok. but we all know that autism even can't be that strong.
>>
>>108948377
CODE IS NOT THE ANSWER. I SHOULD NOT HAVE TO VIBE THE SOLUTION, IT'S A SLIDESHOW!

>I know how to program
to wit,
Write a slideshow Python program that plays an mp3, and, according to a json with timestamps and filenames load them and display them in time.


ai gemini, also picrel lmao

import json
import time
import os
import cv2
import pygame
def run_slideshow(json_path, mp3_path):
# 1. Load JSON and sort by timestamp
with open(json_path, 'r') as f:
slides = json.load(f)
slides.sort(key=lambda x: x['timestamp'])

# 2. Initialize Pygame Mixer for MP3
pygame.mixer.init()
pygame.mixer.music.load(mp3_path)

# 3. Initialize OpenCV Window
cv2.namedWindow("Slideshow", cv2.WND_PROP_FULLSCREEN)
cv2.setWindowProperty("Slideshow", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

print("Playing slideshow... Press 'q' to exit.")
pygame.mixer.music.play()
start_time = time.time()

last_displayed_file = None

# 4. Main loop
while pygame.mixer.music.get_busy():
elapsed_time = time.time() - start_time

# Find the latest slide that matches the current time
active_slide = None
for slide in slides:
if elapsed_time >= slide['timestamp']:
active_slide = slide
else:
break # Slides are sorted, so we can stop looking


(cont)

lmao you can't even fit scripts into 4chan's shit software.
>>
>>108948377
What do you want from your new format that a video can't do?
Other than the filesize, which I am sure you can find a way to keep it down if the video is only stills. Surely a video with chapters can do what you need if you need music to be synced to a image, each image in the slideshow is a chapter in the video.
>>
>>108948401

# Only update the screen if the slide has actually changed
if active_slide and active_slide['filename'] != last_displayed_file:
filename = active_slide['filename']
if os.path.exists(filename):
img = cv2.imread(filename)
if img is not None:
cv2.imshow("Slideshow", img)
last_displayed_file = filename
print(f"[{elapsed_time:.2f}s] Displaying: {filename}")
else:
print(f"Error reading image: {filename}")
else:
print(f"File not found: {filename}")

# Break out if 'q' is pressed (checks every 50ms)
if cv2.waitKey(50) & 0xFF == ord('q'):
break

# Cleanup
pygame.mixer.music.stop()
pygame.quit()
cv2.destroyAllWindows()

if __name__ == "__main__":
JSON_FILE = "slides.json"
AUDIO_FILE = "track.mp3"
run_slideshow(JSON_FILE, AUDIO_FILE)



here's the rest of the vibe code, because 4chan is stupider than you could possibly imagine.
>>
>>108948406
>Other than the filesize
well, nothing other than filesize.

I thought video formats were made by non-retards, but yep turns out they're all "use case/???? huh nobody wants that, not a use case" autists.

Is *anyone* on the planet in charge of anything technical and not a turbo autismo superstar of trans heroism?

We got all the way to 2026 with no slideshow format? Really?

I feel like I'm at mcdonald's trying to buy the non-vomit food, and there is none.
>>
>>108948424
Your time would be better spent finding ways to optimize for file size then instead of whining into the void here.
>>
>>108948438
Well, the fact is that iq isn't a very good measure of the value of the mind.

I'm amazed at how much more retarded everyone else ever to exist is than me. It's kind of a lonesome feeling ngl
>>
>>108948424
>We got all the way to 2026 with no slideshow format? Really?
It's not quite so dire. The closest thing to what you want is macromedia flash - which is dead. No real replacements were ever developed because everyone went "disk space is cheap, just export a video, lol". Maybe there is a "project" file format native to whatever you use for animation (blender, krita, etc.). Unfortunately the final artifact for any of these is usually...a fucking video.

Maybe there's something in the digital signage field, but it would be proprietary to one vendor and not public - certainly not available to the general public as a player they can chuck the file into and play the animation.

If I wanted to build such a format, I'd probably try and get a few extras into the libreoffice ODP specification. It's got most of the ingredients already and - that's the most important bit - there's a widely available player for it. Jupyter notebook format might also be worthy of consideration - lacks the widely available player, though. If you build your own standalone format, you'd have to also build a reference player for all the major desktop, mobile and web browser platforms for it to gain any traction. Good fucking luck with that.

Anyway, I do agree that what you are describing would be very, very useful.
>>
have an mpv lua script that switches images when a timestamp is reached while playing music.

run:
mpv --force-window --no-border --window-maximized --no-config --script=script.lua music.mp3


script.lua:
local last_img
local last_time = 0.0

local function show(img)
if last_img == img then return end
last_img = img
mp.commandv("video-remove", 1)
mp.commandv("video-add", img)
mp.set_property("vid", "1")
end

local timeline = {
{ time = 0.01, action = function() show("image1.jpg") end },
{ time = 3.5, action = function() show("image2.jpg") end },
{ time = 10.5, action = function() show("image3.jpg") end },
}

local function on_time_update(name, current_time)
if not current_time then return end
local is_seeking = math.abs(current_time - last_time) > 1.5
if is_seeking then
local last_valid_action = nil
for _, event in ipairs(timeline) do
if current_time >= event.time then
last_valid_action = event.action
else
break
end
end
if last_valid_action then last_valid_action() end
else
for _, event in ipairs(timeline) do
if last_time < event.time and current_time >= event.time then
event.action()
end
end
end
last_time = current_time
end

local function on_file_loaded()
last_time = 0.0
end

mp.observe_property("time-pos", "number", on_time_update)
mp.register_event("file-loaded", on_file_loaded)
>>
>>108947602
>a file slideshow file format
>ai says it doesn't really exist
lol.
https://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language
>>
>>108947602
sounds like you just want a txt file to pass to ffmpeg concat



[Advertise on 4chan]

Delete Post: [File Only] Style:
[Disable Mobile View / Use Desktop Site]

[Enable Mobile View / Use Mobile Site]

All trademarks and copyrights on this page are owned by their respective parties. Images uploaded are the responsibility of the Poster. Comments are owned by the Poster.