ubuntuusers.de

[Python3] Framework für Audio

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Developer92 Team-Icon

Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

Hallo, kennt zufällig jemand ein Audio-Framework für Python 3.x?

Brauche auch nur die Standardfunktionen (Wiedergabe, Pause, Stop) und eig. nix an Effekten (bis auf Überblenden, wenn möglich).

Hab bisher leider kein passendes Framework dafür finden können.

Ziel ist ein kleiner, schlanker und in der Konsole lauffähiger MediaPlayer.

Die Unterstützung für diverse Dateiformate wie mp3, ogg, flac, etc. sollte natürlich schon irgendwie nachrüstbar sein (gstreamer wäre dafür zum Beispiel cool, läuft aber soweit ich das gesehen habe nur mit Python2.x)

mfg

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

Nicht dass ich gstreamer mit Python3 schon mal benutzt hätte, aber

1
from gi.repository import Gst

sollte doch eigentlich mit Python2 und Python3 funktionieren?

Developer92 Team-Icon

(Themenstarter)
Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

barcc schrieb:

Nicht dass ich gstreamer mit Python3 schon mal benutzt hätte, aber

1
from gi.repository import Gst

sollte doch eigentlich mit Python2 und Python3 funktionieren?

Wusste gar nicht, dass gi.repository auch gstreamer enthält. Danke!

mfg

Developer92 Team-Icon

(Themenstarter)
Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

Sorry, ich musste das nochmal als ungelöst markieren ☺

Ich hab die letzten paar Stunden versucht eine mp3-Datei mittels gstreamer in Python abspielen zu lassen, ohne Erfolg.

Hat zufällig jemand eine Idee wie das gehen könnte? Bin echt am Verzweifeln.

Hier das, was IMHO eigentlich gehen sollte:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys
import time
from gi.repository import Gst

Gst.init_check(sys.argv)

pipeline = Gst.Pipeline(name='Pipeline')

source = Gst.ElementFactory.make('filesrc', 'filesrc')
source.set_property('location', 'file:///home/User/Pfad-Zur-MP3.mp3')

decoder = Gst.ElementFactory.make('decodebin2', 'decoder')

sink = Gst.ElementFactory.make('autoaudiosink', 'output')

pipeline.add(source)
pipeline.add(decoder)
pipeline.add(sink)

source.link(decoder)
decoder.link(sink)
pipeline.set_state(Gst.State.PLAYING)
time.sleep(30)
pipeline.set_state(Gst.State.PAUSED)
exit()

EDIT: Folgender Code funktioniert unter Python2, weiß jemand wie man das evtl. auf Python3 umarbeiten kann?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/usr/bin/env python2
import pygst
pygst.require("0.10")
import gst
import time
#our stream to play
music_stream_uri = 'file:///home/USER/file.mp3'
#creates a playbin (plays media form an uri) 
player = gst.element_factory_make("playbin", "player")
#set the uri
player.set_property('uri', music_stream_uri)
#start playing
player.set_state(gst.STATE_PLAYING)
time.sleep(30)
exit()

Ich weiß ich nerv hier schon rum, aber das muss doch irgendwie gehen?!

noisefloor Team-Icon

Anmeldungsdatum:
6. Juni 2006

Beiträge: 29567

Hallo,

hast du 'ne Fehlermeldung bei der gi Variaten oder funktioniert es einfach nicht?

Gruß, noisefloor

barcc

Avatar von barcc

Anmeldungsdatum:
13. Juli 2007

Beiträge: 696

Wohnort: Dortmund

… EDIT: Folgender Code funktioniert unter Python2, weiß jemand wie man das evtl. auf Python3 umarbeiten kann? …

Hinter beiden Python-Anbindungen steht die gleiche Gstreamer-lib. Deshalb ist das fast ausschließlich eine Sache von Textersetzung:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from gi.repository import Gst
import sys, time
Gst.init(sys.argv)
#our stream to play
music_stream_uri = 'file:///home/USER/file.mp3'
#creates a playbin (plays media form an uri) 
player = Gst.ElementFactory.make("playbin", "player")
#set the uri
player.set_property('uri', music_stream_uri)
#start playing
player.set_state(Gst.State.PLAYING)
time.sleep(30)

Der Code funktioniert übrigens sowohl unter Python2 als auch unter Python3.

Developer92 Team-Icon

(Themenstarter)
Avatar von Developer92

Anmeldungsdatum:
31. Dezember 2008

Beiträge: 4101

noisefloor schrieb:

Hallo,

hast du 'ne Fehlermeldung bei der gi Variaten oder funktioniert es einfach nicht?

Da gibt es so vieles was man dran ändern kann, wodurch diese Frage leider nicht so leicht zu beantworten war (jedenfalls für mich, bin neu im Bereich gstreamer)

barcc schrieb:

Hinter beiden Python-Anbindungen steht die gleiche Gstreamer-lib. Deshalb ist das fast ausschließlich eine Sache von Textersetzung:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
from gi.repository import Gst
import sys, time
Gst.init(sys.argv)
#our stream to play
music_stream_uri = 'file:///home/USER/file.mp3'
#creates a playbin (plays media form an uri) 
player = Gst.ElementFactory.make("playbin", "player")
#set the uri
player.set_property('uri', music_stream_uri)
#start playing
player.set_state(Gst.State.PLAYING)
time.sleep(30)

Faszinierend, hab 1:1 den gleichen Code schon probiert, nur ohne Gst.init(sys.argv).

Dankeschön, das hilft mir gleich ein gutes Stück weiter.

mfg

EDIT: Wer noch gute Tutorials zu gstreamer zum Aufbau eines simpelsten MediaPlayer weiß, darf die hier auch gerne noch posten ☺

Antworten |