Tenho um problema ao executar um comando FFMPEG em um script Python. Quando executo o seguinte comando no terminal, posso transmitir vídeo e áudio da minha webcam conectada (Logitech C310) e enviar para o arquivo "out.avi" sem erros.
ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi
Quando executo o mesmo comando em um script Python abaixo,
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")
isso me dá esse erro:
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
Alguém poderia lançar alguma luz sobre o que poderia estar acontecendo aqui? Eu tentei usar os.system() bem como subprocess.call() e isso me deu os mesmos erros. Não sei por onde começar sobre o que pode estar errado aqui. Tentei pesquisar o erro "video4linux2 Não é possível encontrar um formato adequado para codec_id 0, pix_fmt -1", mas não consegui encontrar nada consistente.
Responder1
Este problema foi resolvido emfluxo de pilha.
Para resumir a resposta, foi um problema com o código do solicitante, ele estava exibindo a saída na tela ao mesmo tempo que tentava gravá-la e isso causou um conflito.
Responder2
Em vez de dividir sua string de "comando", você pode chamar osubprocessomódulo com parâmetro shell=True
:
subprocess.Popen(command, shell=True)
No entanto, não podemos testar aqui se isso resolve o problema do codec.