ffmpeg ha generado un código de salida inesperado 1 para -list_devices y -list_options.
Descripción
Si ejecuto cualquiera de los siguientes comandos de los ejemplos en la documentación, utilizando ffmpeg
4.2.2 en Windows 10, la información solicitada sí se muestra correctamente en la consola, pero el proceso finaliza con el código de salida 1
, en lugar del esperado 0
(éxito).
ffmpeg -list_devices true -f dshow -i dummy
ffmpeg -list_options true -f dshow -i video="MyCamera"
En lo que sé, el código de salida 1
en Windows implica “Función incorrecta”, por lo que considero que este comportamiento es inesperado.
Si transmito la entrada de la cámara al disco, utilizando por ejemplo ffmpeg -f dshow -i video="MyCamera" "myfile.mp4"
, y luego detengo el proceso usando q, el código de salida es 0
, como se espera.
Pregunta
¿El código de salida 1
constituye un comportamiento normal para ffmpeg
, o estoy haciendo algo mal?
Importancia
Cuando se ejecutan los comandos manualmente desde la línea de comandos, el código de salida no tiene mucha importancia, siempre y cuando se muestre la información solicitada.
Sin embargo, cuando se ejecutan los comandos de forma programática, puede causar problemas. Por ejemplo, al utilizar el subprocess.run(..., check=True)
de Python, el código de salida distinto de cero causa un CalledProcessError.
Por supuesto, existen formas de solucionarlo, como utilizar check=False
, pero el punto es que una solución no debería ser necesaria si ffmpeg
se comportara como se espera, es decir, devolviendo 0
.
davy.ai
Basándonos en la información proporcionada, parece que el código de salida
1
devuelto porffmpeg
al ejecutar los comandosffmpeg -list_devices true -f dshow -i dummy
yffmpeg -list_options true -f dshow -i video="MyCamera"
en Windows 10 es inesperado y no constituye un comportamiento normal paraffmpeg
. Es posible que haya un problema conffmpeg
en Windows 10 o que haya un error en la sintaxis del comando. Este comportamiento puede causar problemas al ejecutar los comandos programáticamente, especialmente con herramientas comosubprocess.run(..., check=True)
de Python, que espera un código de salida cero para una ejecución exitosa. Hay soluciones alternativas disponibles, como usarcheck=False
, pero el comportamiento esperado debería ser queffmpeg
devuelva un código de salida0
al ejecutarse correctamente. Es posible que se necesite una investigación adicional para determinar la causa del comportamiento inesperado.