Je travaillais sur un projet vidéo depuis un moment, et je me suis finalement heurté à un mur avec VLC . VLC est le meilleur lecteur vidéo. Il peut également être utilisé comme outil de génération vidéo, mais présente quelques bizarreries liées au FPS des fichiers de sortie. j'ai décidé de ré-enquêter FFmpeg en remplacement. J'avais utilisé FFmpeg il y a longtemps, sans vraiment lire toutes les docs et je me souvenais que c'était compliqué. Et bien ça l'est. J'ai passé la journée à lire la doc. C'est un outil en ligne de commande avec des tonnes de doc (voir lien) . J'ai mis cela ensemble comme une preuve de concept. Il peut faire beaucoup plus.
Le JSL ci-dessous consiste en une fonction définie par l'utilisateur qui génère des images pour une séquence vidéo et un appel RunProgram qui exécute FFmpeg pour créer une vidéo. FFmpeg est invité à obtenir des images via stdin et RunProgram les fournit en appelant la fonction définie par l'utilisateur. Je ne l'ai exécuté que sur Windows, mais je pense qu'il ne faudra que quelques modifications mineures pour le faire fonctionner également sur Mac.
Pour l'exécuter, vous devrez télécharger FFmpeg. Leur site Web pointe vers un autre site sur lequel vous pouvez l'obtenir. Je ne sais pas pourquoi ils n'ont pas de version officielle de Windows. Une fois installé, ce script s'exécutera en 30 secondes environ pour créer une vidéo de 8 secondes, puis ouvrira la vidéo dans votre lecteur par défaut. Cela paraîtra mieux dans VLC, ou vous pouvez le télécharger sur youtube et le voir comme ceci :
Lis le trucs légaux soigneusement si vous allez faire un travail commercial avec.
// 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>