mplayer stoppt nach 2m

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

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
BlackJack

@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.
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

Da ich den Output nicht brauche, mach ich da auch nichts mit.
Sollte die Output Pipe dann eventuell NULL sein?

Gruß
Florian
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

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
wasserflo
User
Beiträge: 8
Registriert: Montag 4. Januar 2016, 20:08

Nach deinem Tipp sieht das ganze Testprg jetzt so aus:

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
Benutzeravatar
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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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`.
the more they change the more they stay the same
Antworten