Estoy luchando con un script de conversión de medios ffmpeg.
Estoy usando la biblioteca node.js -ffmpeg con node.js.
Se supone que mi aplicación debe recibir una transmisión como entrada, cambiar su tamaño usando ffmpeg y luego generar una transmisión.
Sin embargo, soy absolutamente incapaz de procesar un flujo de entrada con ffmpeg, incluso cuando se especifica el formato de entrada (opción -f ffmpeg).
Sin embargo, al ejecutar exactamente el mismo comando ffmpeg en un archivo mp4 ( sin extensión ), ¡funciona y convierte correctamente los medios!
import * as ffmpeg from 'fluent-ffmpeg'; ffmpeg('myMp4File') .inputFormat('mp4') .audioCodec('aac') .videoCodec('libx264') .format('avi') .size('960x540') .save('mySmallAviFile'); import * as ffmpeg from 'fluent-ffmpeg'; import { createReadStream } from 'fs'; ffmpeg(createReadStream('myMp4File')) .inputFormat('mp4') .audioCodec('aac') .videoCodec('libx264') .format('avi') .size('960x540') .save('mySmallAviFile');Genera el siguiente error de ffmpeg:
Error: ffmpeg exited with code 1: pipe:0: Invalid data found when processing input Cannot determine format of input stream 0:0 after EOF Error marking filters as finished Conversion failed! Este error dice explícitamente que ffmpeg no pudo identificar el formato de entrada, a pesar del argumento -f mp4 .
Leí páginas y páginas del hombre de ffmpeg, pero pude encontrar información relevante sobre mi problema.
Aquí está el resultado de command._getArguments() , que muestra el comando ffmpeg completo creado por la biblioteca:
[ '-f', 'mp4', '-i', 'pipe:0', '-y', '-acodec', 'aac', '-vcodec', 'libx264', '-filter:v', 'scale=w=960:h=540', '-f', 'avi', 'mySmallAviFile' ]Entonces, el comando ffmpeg completo es el siguiente:
ffmpeg -f mp4 -i pipe:0 -y -acodec 'aac' -vcodec 'libx264 -filter:v 'scale=w=960:h=540' -f 'avi' mySmallAviFile