FFMPEG: tamaño de archivo cero cuando el sonido está habilitado
-
03-07-2019 - |
Pregunta
Tengo algunos problemas para convertir archivos de video desde la línea de comandos usando FFMPEG. Estoy usando un servidor CentOS, pero desafortunadamente no tengo acceso a shell.
Cuando suprimo el sonido con el siguiente comando, todo funciona perfectamente (¡excepto, por supuesto, no hay sonido!)
ffmpeg -i $infile -an test.flv
Sin embargo, cuando trato de habilitar el sonido en cualquier forma, el archivo que se emite tiene un tamaño de archivo de cero kb.
FFMPEG se compila con soporte para libmp3lame y libfaac, y se instalan los códecs necesarios. Aquí está la configuración de FFMPEG en el servidor:
Versión FFmpeg SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuración: --prefix = / usr --libdir = / usr / lib --mandir = / usr / share / man --incdir = / usr / include / ffmpeg --enable-libmp3lame --enable-libog3laenenable-libogg --enable- libvorbis --enable-libogg --enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable- pp --enable-shared --enable-pthreads --enable-gpl --disable-strip
Aquí hay una muestra muy pequeña de algunos de los comandos que he probado que dan como resultado un tamaño de archivo de 0Kb:
ffmpeg -i $infile test.flv
ffmpeg -i $infile -vcodec copy -acodec ac3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec mp3 test.flv
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec copy $outfile
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec aac $outfile
Si alguien pudiera dar alguna pista sobre lo que está pasando aquí, ¡realmente lo agradecería!
EDITAR : aquí está el resultado cuando redirijo stderr a un archivo
Versión FFmpeg SVN-rUNKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. configuración: --prefix = / usr --libdir = / usr / lib --mandir = / usr / share / man --incdir = / usr / include / ffmpeg --enable-libmp3lame --enable-libogg --enable-libvorbis --enable-libogg - enable-libtheora --enable-libfaad --enable-libfaac --enable-libgsm --enable-xvid --enable-x264 --enable-liba52 --enable-liba52bin --enable-pp --enable-shared - enable-pthreads --enable-gpl --disable-strip versión libavutil: 49.4.0 versión libavcodec: 51.40.4 versión libavformat: 51.12.1 construida el 4 de junio de 2007 11:02:12, gcc: 4.1.1 20070105 (Rojo Sombrero 4.1.1-52)
Entrada # 0, mov, mp4, m4a, 3gp, 3g2, mj2, desde '/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4': Duración: 00: 00: 32.4, inicio: 0.000000, velocidad de bits: 122 kb / s Stream # 0.0 (jpn): Video: h263, yuv420p, 176x144, 29.97 fps (r) Stream # 0.1 (jpn): Audio: samr / 0x726D6173, 8000 Hz, mono
Salida # 0, flv, a '/path/to/test.flv': Stream # 0.0: Video: flv, yuv420p, 176x144, q = 2-31, 200 kb / s, 29.97 fps (c) Stream # 0.1: Audio: mp3, 8000 Hz, mono, 64 kb / s Mapeo de flujo: flujo # 0.0 - > # 0.0 Corriente # 0.1 - > # 0.1
Códec no compatible (id = 73728) para la secuencia de entrada # 0.1
Solución
¿Qué tipo de acceso tiene al servidor? Debe tener alguna capacidad para ejecutar comandos en él.
Siendo ese el caso, ¿cuál es la salida de error de ffmpeg
?
¿Posiblemente un argumento detallado apropiado le diga más sobre el problema?
EDITAR:
Veamos si podemos obtener la salida stderr. Ejecutar:
ffmpeg -version
Y vea si puede obtener algún resultado. Una vez que haya logrado extraer algunos resultados de stderr, podemos investigar el problema original.
EDITAR:
Por lo tanto, parece que está perdiendo stderr
; ahora necesita saber cómo recuperarlo.
Quizás:
ffmpeg -version 2>&1
¿funcionará?
EDITAR:
Cómo estamos llegando a algún lado: el códec de audio de entrada no es compatible:
Unsupported codec (id=73728) for input stream #0.1
No sé qué Stream # 0.1 (jpn): Audio: samr / 0x726D6173, 8000 Hz, mono
.
Pero hay un problema.
Le sugiero que desee investigar en una caja de Linux local; podría ser más fácil ver los problemas.
EDITAR:
De http://www.nabble.com/Convert- 3gp-samr-file-td20514476.html parece que ffmpeg se puede compilar con el soporte --enable-libamr-nb
--enable-libamr-wb
.
¿Recompilar ffmpeg
es una opción?
Otros consejos
Resolví este problema. Aquí mi código:
<?php
define('FFMPEG_LIBRARY', '/usr/local/bin/ffmpeg');
$exec_string = FFMPEG_LIBRARY.' -i robot.avi -an output.flv';
exec($exec_string); //where exec is the command used to execute shell command in php
?>