Hi,
ich rufe aus einem Python prg den mplayer auf.
Dummerweise hören alle aufgerufenen MP3s nach ca. 2m auf.
Das heißt der mplayer Prozess wird beendet.
Aufgerufen wird das ganze mit
player = subprocess.Popen(["mplayer", "start.mp3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Hat jemand eine Idee, warum das so ist und wie man das ändert?
Starte ich den mplayer von der Kommandozeile, läuft das MP3 bis zum Ende.
Gruß
Florian
mplayer stoppt nach 2m
@wasserflo: Was machst Du denn danach mit den umgeleiteten Ausgaben? Wenn das Programm da Daten schreibt und Du die nicht ausliest, sind irgendwann die Puffer voll und der externe Prozess blockiert.
Es sollte funktionieren wenn du nach devnull umleitest
Code: Alles auswählen
with open(os.devnull) as nul:
p = Popen(..., stdout=nul, stderr=nul)
the more they change the more they stay the same
Hab's gerade mal damit probiert:
devnull = open('/dev/null', 'w')
player = subprocess.Popen(["mplayer", "r1.mp3"], stdin=subprocess.PIPE, stdout=devnull, stderr=subprocess.PIPE)
Hat aber nicht geholfen.
Geht immer noch nach 2 min aus.
Florian
devnull = open('/dev/null', 'w')
player = subprocess.Popen(["mplayer", "r1.mp3"], stdin=subprocess.PIPE, stdout=devnull, stderr=subprocess.PIPE)
Hat aber nicht geholfen.
Geht immer noch nach 2 min aus.
Florian
Nach deinem Tipp sieht das ganze Testprg jetzt so aus:
Damit klappt es dann auch.
Vielen Dank
Florian
Code: Alles auswählen
#!/usr/bin/env python
import subprocess
import time
import os
with open(os.devnull) as nul:
p = subprocess.Popen(["mplayer", "r1.mp3"], stdin=subprocess.PIPE, stdout=nul, stderr=nul)
while 1:
time.sleep(1)
Damit klappt es dann auch.
Vielen Dank
Florian
Zuletzt geändert von cofi am Freitag 8. Januar 2016, 00:09, insgesamt 1-mal geändert.
Grund: Code highlighting korrigiert
Grund: Code highlighting korrigiert
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
AFAIR schreibst mplayer vor allem auf STDERR, also solltest du auch das umleiten.
Daneben: Bitte benutze eine Codebox um Code zu schreiben. Listbox "Code auswählen" und nach python suchen. Sonst ist der ganze Code wertlos.
Daneben: Bitte benutze eine Codebox um Code zu schreiben. Listbox "Code auswählen" und nach python suchen. Sonst ist der ganze Code wertlos.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
Interessant, dass dein Code funktioniert, du öffnest `devnull` nämlich nicht zum schreiben (`wb`).
Ansonsten gibt es auch Mplayer flags die den Output reduizeren bzw. komplett unterdrücken `-msglevel` und `-quiet`.
Ansonsten gibt es auch Mplayer flags die den Output reduizeren bzw. komplett unterdrücken `-msglevel` und `-quiet`.
the more they change the more they stay the same