J'ai un problème avec l'exécution d'une commande FFMPEG à partir d'un script Python. Lorsque j'exécute la commande suivante à partir du terminal, je peux diffuser de la vidéo et de l'audio à partir de ma webcam attachée (Logitech C310) et les exporter dans le fichier "out.avi" sans erreur.
ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi
Lorsque j'exécute la même commande dans un script Python ci-dessous,
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")
cela me donne cette erreur:
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
Quelqu'un pourrait-il nous éclairer sur ce qui pourrait se passer ici? J'ai essayé d'utiliser os.system () ainsi que subprocess.call () et cela me donne les mêmes erreurs. Je ne sais pas par où commencer sur ce qui pourrait mal se passer ici. J'ai essayé de rechercher l'erreur "video4linux2. Impossible de trouver le format approprié pour codec_id 0, pix_fmt -1", mais je n'ai rien trouvé de cohérent.
Ce problème a été résolu dans stackoverflow .
Pour résumer la réponse, c’était un problème de code du demandeur, il affichait la sortie à l’écran en même temps qu’il essayait de l’enregistrer, ce qui provoquait un conflit.
Plutôt que de diviser votre chaîne "commande", vous pouvez appeler le module sous-processus avec le paramètre Shell=True
:
subprocess.Popen(command, Shell=True)
Cependant, nous ne pouvons pas tester ici si cela résout votre problème de codec.