Estuve trabajando en un proyecto de video por un tiempo y finalmente choqué contra una pared con VLC . VLC es el mejor reproductor de video. También se puede usar como una herramienta de generación de video, pero tiene algunas peculiaridades relacionadas con los FPS de los archivos de salida. Decidí volver a investigar MPEG como un reemplazo. Usé FFmpeg hace mucho tiempo, sin leer realmente todos los documentos y recordé que era complicado. Bueno, lo es. Pasé hoy leyendo los documentos. Es una herramienta de línea de comandos con toneladas de documentos (ver enlace) . Reuní esto como una prueba de concepto. Hay mucho más que puede hacer.
El JSL a continuación consiste en una función definida por el usuario que genera imágenes para una secuencia de video y una llamada RunProgram que ejecuta FFmpeg para hacer un video. Se le dice a FFmpeg que obtenga imágenes a través de stdin, y RunProgram las proporciona llamando a la función definida por el usuario. Solo lo he ejecutado en Windows, pero creo que solo se necesitarán algunos cambios menores para que funcione también en Mac.
Para ejecutarlo, deberá descargar FFmpeg. Su sitio web apunta a otro sitio desde el que puede obtenerlo. No estoy seguro de por qué no tienen una versión oficial de Windows. Una vez instalado, este script se ejecutará en aproximadamente 30 segundos para hacer un video de 8 segundos, luego abra el video en su reproductor predeterminado. Se verá mejor en VLC, o puedes subirlo a youtube y verlo así:
Leer el cosas legales con cuidado si va a hacer un trabajo comercial con él.
// 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>