Problemas com linhas de comando em Python / FFMPEG [closed]

3

Eu tenho um problema com a execução de um comando FFMPEG de dentro de um script Python. Quando eu executo o seguinte comando do terminal, posso transmitir vídeo e áudio da minha webcam anexada (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 me dá os mesmos erros. Não sei por onde começar o que poderia estar errado aqui. Eu tentei procurar o erro "video4linux2 não é possível encontrar um formato adequado para codec_id 0, pix_fmt -1", mas não conseguiu encontrar nada consistente.

    
por 12hys 05.10.2011 / 02:45

2 respostas

0

Este problema foi resolvido em stackoverflow .

Para resumir a resposta, foi um problema com o código de asker, ele estava exibindo a saída na tela ao mesmo tempo em que ele estava tentando gravar e isso causou um conflito.

    
por Javier Rivera 23.05.2017 / 14:39
0

Em vez de dividir sua string "command", você pode chamar o módulo do subprocesso com o parâmetro shell=True :

subprocess.Popen(command, shell=True)

No entanto, não podemos testar aqui se isso resolver o problema do seu codec.

    
por Takkat 05.10.2011 / 08:56