Tengo un problema al ejecutar un comando FFMPEG desde un script de Python. Cuando ejecuto el siguiente comando desde la terminal, puedo transmitir video y audio desde mi cámara web adjunta (Logitech C310) y enviarlo al archivo "out.avi" sin ningún error.
ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi
Cuando ejecuto el mismo comando en un script de Python a continuación,
def call_command(command):
subprocess.Popen(command.split(' '))
call_command("ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi")
me da este error:
Input #0, alsa, from 'default':
Duration: N/A, start: 1317762562.695397, bitrate: N/A
Stream #0.0: Audio: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
[video4linux2 @ 0x165eb10]Cannot find a proper format for codec_id 0, pix_fmt -1.
/dev/video0: Input/output error
¿Alguien podría arrojar algo de luz sobre lo que podría estar pasando aquí? Intenté usar os.system() así como subprocess.call() y me da los mismos errores. No estoy seguro de por dónde empezar sobre lo que podría estar yendo mal aquí. Intenté buscar el error "video4linux2 No se puede encontrar un formato adecuado para codec_id 0, pix_fmt -1", pero no pude encontrar nada consistente.
Respuesta1
Este problema ha sido resuelto endesbordamiento de pila.
Para resumir la respuesta, fue un problema con el código del autor de la pregunta, estaba mostrando el resultado en la pantalla al mismo tiempo que intentaba grabarlo y esto causó un conflicto.
Respuesta2
En lugar de dividir su cadena de "comando", puede llamar alsubprocesomódulo con parámetro shell=True
:
subprocess.Popen(command, shell=True)
Sin embargo, no podemos probar aquí si esto resuelve su problema de códec.