Ich habe eine Weile an einem Videoprojekt gearbeitet und bin schließlich damit gegen eine Wand gelaufen VLC . VLC ist die Beste Videoplayer. Es kann auch als Tool zur Videogenerierung verwendet werden, hat aber einige Macken in Bezug auf FPS der Ausgabedateien. Ich beschloss, es erneut zu untersuchen FFmpeg als Ersatz. Ich hatte FFmpeg vor langer Zeit verwendet, ohne wirklich alle Dokumente gelesen zu haben, und erinnerte mich, dass es kompliziert war. Nun, es ist. Ich habe den heutigen Tag damit verbracht, die Dokumente zu lesen. Es ist ein Befehlszeilentool mit Tonnen von Dokumenten (siehe Link) . Ich habe dies als Proof-of-Concept zusammengestellt. Es kann noch viel mehr.
Die folgende JSL besteht aus einer benutzerdefinierten Funktion, die Bilder für eine Videosequenz generiert, und einem RunProgram-Aufruf, der FFmpeg ausführt, um ein Video zu erstellen. FFmpeg wird angewiesen, Bilder über stdin abzurufen, und RunProgram stellt sie bereit, indem es die benutzerdefinierte Funktion aufruft. Ich habe es nur unter Windows ausgeführt, aber ich glaube, es sind nur einige geringfügige Änderungen erforderlich, damit es auch auf Mac ausgeführt werden kann.
Um es auszuführen, müssen Sie FFmpeg herunterladen. Ihre Website verweist auf eine andere Website, von der Sie sie erhalten können. Ich bin mir nicht sicher, warum sie keine offizielle Windows-Version haben. Nach der Installation wird dieses Skript in etwa 30 Sekunden ausgeführt, um ein 8-Sekunden-Video zu erstellen und das Video dann in Ihrem Standardplayer zu öffnen. Es wird in VLC besser aussehen, oder Sie können es auf YouTube hochladen und es so sehen:
Lies das legales Zeug sorgfältig, wenn Sie kommerzielle Arbeiten damit ausführen.
// generate images for ffmpeg stdin on the fly to make a video
// using https://ffmpeg.org/download.html#build-windows
//
// You could make a somewhat simpler version, maybe, by writing
// the files to disk and telling ffmpeg to re-read them. I wanted
// to use the stdin pipe, and didn't try a file. I hope this pipe is
// at least as fast as writing and reading the files.
//
// you can't make a 2nd, parallel stream of audio data using RunProgram,
// so you'll need a disk file for audio. Or http as shown...
outputmp4 = ConvertFilePath("$desktop/VideoMadeByJMPandFFMPEG.mp4", "windows");
nrows = 1080 / 2;// keep the image buffer even in both dimensions
ncols = 1920 / 2;// and maybe a multiple of 16 as well
Open Log( 1 ); // where the action is (may need this window open for the text box to work)
imagex = J( nrows, ncols, RGB Color( 1, 1, 1 ) ); // buffer of JSL color values, updated by getNextImage...
// credit the CC music...write this once, into the buffer
musicCredit = Text Box(
"\!"Pump Sting\!" Kevin MacLeod (incompetech.com)
Licensed under Creative Commons: By Attribution 4.0 License
http://creativecommons.org/licenses/by/4.0/
"||char(asdate(today())),
<<SETWRAP></SETWRAP>