Python/FFMPEG-Befehlszeilenprobleme

Python/FFMPEG-Befehlszeilenprobleme

Ich habe ein Problem beim Ausführen eines FFMPEG-Befehls innerhalb eines Python-Skripts. Wenn ich den folgenden Befehl vom Terminal aus ausführe, kann ich Video und Audio von meiner angeschlossenen Webcam (Logitech C310) streamen und ohne Fehler in die Datei „out.avi“ ausgeben.

ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi

Wenn ich den gleichen Befehl in einem Python-Skript unten ausführe,

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")

es gibt mir diesen Fehler:

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

Kann jemand Licht ins Dunkel bringen, was hier los sein könnte? Ich habe versucht, sowohl os.system() als auch subprocess.call() zu verwenden, und es gibt die gleichen Fehler. Ich bin mir nicht sicher, wo ich anfangen soll, um herauszufinden, was hier schief laufen könnte. Ich habe versucht, nach dem Fehler „video4linux2 kann kein geeignetes Format für Codec_ID 0, pix_fmt -1 finden“ zu suchen, konnte aber nichts Konsistentes finden.

Antwort1

Dieses Problem wurde behoben inPaketüberfluss.

Um die Antwort zusammenzufassen: Es gab ein Problem mit dem Code des Fragestellers. Er zeigte die Ausgabe auf dem Bildschirm an, während er gleichzeitig versuchte, sie aufzuzeichnen, und dies verursachte einen Konflikt.

Antwort2

Anstatt Ihre "Befehls"-Zeichenfolge aufzuteilen, können Sie denUnterprozessModul mit Parameter shell=True:

subprocess.Popen(command, shell=True)

Wir können hier jedoch nicht testen, ob Ihr Codec-Problem dadurch behoben wird.

verwandte Informationen