ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: MP3 Player durch Gstreamer Framework
BeitragVerfasst: 13 Aug 2005, 14:22 
Offline
Meister
Benutzeravatar

Registriert: 13 Mär 2005, 18:02
Beiträge: 224
Wohnort: Düsseldorf
Hallo.

Ich spiele gerade mit gst und ich hoffe, dass jemand hier das auch schon getan hat. Aber obzwar ich mich schon auf http://ruby-gnome2.sourceforge.jp/hiki. ... FGStreamer
belesen habe, verstehe ich die Konstruktion oder deren Verhalten nicht.
Von der Quelle zum Decoder zu OSS wird gestreamed, soweit okay.
Aber wieso kann ich die Pause nicht mit einem play 'verlassen'.
Oder wieso spielt ein zweiter stream Befehl nur ganz kurz das neue Lied an?

Ich bin für jede Hilfe dankbar, selbst wenn ich nur auf eine Seite verwiesen werde. Auch für das Lesen bin ich schon dankbar. Bin ich zu dankbar? Nein.



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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#!/usr/bin/ruby

# DEB: gstreamer0.8-oss
# DEB: libgstreamer0.8-ruby

require 'gst'

class Player
def initialize
@pipeline = Gst::Thread.new
end

def stream trackpath
@filesrc = Gst::ElementFactory.make("filesrc")
@filesrc.location = trackpath
@spider = Gst::ElementFactory.make("spider")
@audiosink = Gst::ElementFactory.make("osssink")

@pipeline.clear
@pipeline.add(@filesrc, @spider, @audiosink)

@filesrc >> @spider >> @audiosink

@pipeline.play
end

def play
@pipeline.play
end

def stop
@pipeline.stop
end

def pause
@pipeline.pause
end
end

Gst.init

lied1 = "/crypt/itachi-12341184/digital musik/trail of tears/profoundemonium - 2000/01 countdown to ruin.mp3"
lied2 = "/crypt/itachi-12341184/digital musik/trail of tears/profoundemonium - 2000/02 driven through the ruins.mp3"

# p = Player.new
# p.stream lied1
# sleep 2
# p.pause
# sleep 2
# p.play
# -
# lied1 spielt zwei Sekunden lang,
# pausiert zwei Sekunden lang
# und das programm endet ohne Ausgabe von Fehler, Warnungen


# p = Player.new
# p.stream lied1
# sleep 2
# p.stream lied2
# -
# lied1 spielt zwei Sekunden lang.
# lied2 wird zwar gestartet, jedoch spielt es nur f��r eine Sekunde, h��chstens


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 13 Aug 2005, 16:01 
Offline
Obfuscator

Registriert: 18 Feb 2004, 15:47
Beiträge: 560
Wohnort: Erkelenz (Ostlimburg)
In der Tat habe ich gerade mal versucht, das Beispiel auf http://ruby-gnome2.sourceforge.jp/hiki.cgi?tut-gst-helloworld laufen zu lassen - tatsächlich bricht das Programm jedoch ab, ohne auch nur irgendetwas zu tun, da pipeline.iterate wirkungslos bleibt und false zurückgibt. Dabei scheint es unerheblich zu sein, ob die genannte mp3-Datei existiert oder nicht.

Malte


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 13 Aug 2005, 17:12 
Offline
Meister
Benutzeravatar

Registriert: 13 Mär 2005, 18:02
Beiträge: 224
Wohnort: Düsseldorf
malte hat geschrieben:
In der Tat habe ich gerade mal versucht, das Beispiel auf http://ruby-gnome2.sourceforge.jp/hiki.cgi?tut-gst-helloworld laufen zu lassen - tatsächlich bricht das Programm jedoch ab, ohne auch nur irgendetwas zu tun, da pipeline.iterate wirkungslos bleibt und false zurückgibt. Dabei scheint es unerheblich zu sein, ob die genannte mp3-Datei existiert oder nicht.

Malte

Das Programm geht hier super.
Hast du ['gstreamer', 'gstreamer mad plugin', 'gstreamer bindings für ruby'].each installiert? :>
Dieses Beispiel geht aber nur mit dem iterate loop indem nichts gemacht wird und welcher das gesamte Programm in einen Einfierzustand versetzt.
Deswegen hab ich den spider decoder und ein Gst::Thread Objekt benutzt.


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 13 Aug 2005, 18:58 
Offline
Obfuscator

Registriert: 18 Feb 2004, 15:47
Beiträge: 560
Wohnort: Erkelenz (Ostlimburg)
Ich habe alles installiert. Alle Objekte werden brav erstellt, nur gibt eben pipeline.iterate tatenlos false zurück.

Malte


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 28 Aug 2005, 19:36 
Offline
Nuby

Registriert: 04 Aug 2005, 13:16
Beiträge: 5
Wohnort: /dev/misc/reallife
hm also ich hab das folgende bei mir in den samples:


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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
require 'gst'

def usage
puts "Usage: #{__FILE__} mp3-file"
exit
end

def main
usage if ARGV.length != 1
file = ARGV[0]

# Create a pipeline to hold the elements
pipeline = Gst::Pipeline.new("my_pipeline")

# Create a disk reader
filesrc = Gst::ElementFactory.make("filesrc", "my_disk_source")
filesrc.location = file

# Now it's time to get the MP3 decoder
decoder = Gst::ElementFactory.make("mad", "my_decoder")

# And an audio sink
audiosink = Gst::ElementFactory.make("osssink", "my_audio_player")

# Add objects to the main pipeline
pipeline.add(filesrc, decoder, audiosink)

# Link disk source => decoder => audio player
filesrc >> decoder >> audiosink

# Start playing
puts "Playing #{file}..."
pipeline.play

begin
# Wait until the file is played
while pipeline.iterate do end
rescue Interrupt
ensure
# Stop the pipeline
pipeline.stop
end
end

Gst.init
main

Funktioniert auch soweit.

Hoffe es hilft dir was.

_________________
Not alone with a dream
Just want to be free
With a need to belong
I am a clansman .....Freedom

Iron Maiden - Clansman

_______________________________
Bild Bild Bild
$ ruby -e '0o10.downto(0_0){|_1|print((0x8F[_1]==0_1?"o":".")<<(_1%3==0?0_12:0_0))}'
recently played: Bild


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 02 Dez 2006, 19:44 
Offline
Nuby

Registriert: 02 Dez 2006, 19:34
Beiträge: 1
hallo,
ich bin noch ziemlich neu in ruby und wollte mal was mit gstreamer machen. nur komm nicht weiter, weil das gstreamer-helloworld beispiel bei mir auch nicht geht, es bricht mit der fehlermeldung "23:in `add': Gst::Element expected (TypeError)" ab.
den code von VeerS hab ich auch schon versucht, passiert genau das gleiche in einer anderen zeile.
die bindings hab ich alle installiert.
weiß inzwischen jemand woran es liegen könnte?


Nach oben
 Profil  
 
 Betreff des Beitrags:
BeitragVerfasst: 04 Dez 2006, 09:23 
Offline
Lehrling
Benutzeravatar

Registriert: 16 Sep 2005, 17:44
Beiträge: 99
Wohnort: Bruneck, Südtirol, Italien
hab mal einen player mit GStreamer geschrieben. Ist zwar nicht perfekt und läuft nur mit dem dazugehörigen editor...
Mit ein paar Änderungen läuft er allerdings auch eigenständig!
Schau's dir mal an; vielleicht hilft's ja :)


Nach oben
 Profil  
 
BeitragVerfasst: 03 Apr 2011, 15:17 
Offline
Schüler

Registriert: 11 Okt 2010, 17:54
Beiträge: 36
Habt ihr es gut, dass bei euch mit so schöenen Errors abgebrochen wird...
bei mir siehts so aus:



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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

matthias@metbook:~/Downloads$ ruby mpdreiplayer.rb /home/matthias/webutter.mp3
mpdreiplayer.rb:10: [BUG] Segmentation fault
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]

-- control frame ----------
c:0004 p:---- s:0016 b:0016 l:000015 d:000015 CFUNC :make
c:0003 p:0093 s:0012 b:0012 l:001878 d:002548 EVAL mpdreiplayer.rb:10
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:001878 d:001878 TOP
---------------------------
-- Ruby level backtrace information ----------------------------------------
mpdreiplayer.rb:10:in `<main>'
mpdreiplayer.rb:10:in `make'

-- C level backtrace information -------------------------------------------
/usr/lib/libruby.so.1.9(rb_vm_bugreport+0x5f) [0x7f6ee511d20f]
/usr/lib/libruby.so.1.9(+0x5d294) [0x7f6ee5024294]
/usr/lib/libruby.so.1.9(rb_bug+0xb3) [0x7f6ee5024b83]
/usr/lib/libruby.so.1.9(+0xf8045) [0x7f6ee50bf045]
/lib/libc.so.6(+0x326d0) [0x7f6ee4c986d0]
/usr/lib/ruby/site_ruby/1.9.1/x86_64-linux/glib2.so(rbg_rval2cstr_accept_nil+0) [0x7f6ee36cdfb0]
/usr/lib/ruby/site_ruby/1.9.1/x86_64-linux/gst.so(+0x1a1a8) [0x7f6ee2b2a1a8]
/usr/lib/libruby.so.1.9(+0x150556) [0x7f6ee5117556]
/usr/lib/libruby.so.1.9(+0x146d2b) [0x7f6ee510dd2b]
/usr/lib/libruby.so.1.9(+0x14b5fd) [0x7f6ee51125fd]
/usr/lib/libruby.so.1.9(rb_iseq_eval_main+0xb1) [0x7f6ee5119931]
/usr/lib/libruby.so.1.9(+0x616aa) [0x7f6ee50286aa]
/usr/lib/libruby.so.1.9(ruby_exec_node+0x1d) [0x7f6ee5028ccd]
/usr/lib/libruby.so.1.9(ruby_run_node+0x1e) [0x7f6ee502a85e]
ruby(main+0x4b) [0x40088b]
/lib/libc.so.6(__libc_start_main+0xfd) [0x7f6ee4c84dcd]
ruby() [0x400779]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Abgebrochen



example der gstreamer site.
habe auch schon hier geschrieben: viewtopic.php?f=22&t=12405

Aber die aktivität der Nutzer hier ist so gering, dass ich zu keinem Ergebniss gebracht werde... :-(


Nach oben
 Profil  
 
BeitragVerfasst: 03 Apr 2011, 16:33 
Offline
Rubyist
Benutzeravatar

Registriert: 04 Jun 2008, 22:03
Beiträge: 394
aus genau diesem grund wollte ich mal meine eigenen bindings für gstreamer bauen wo die gems nicht so blöd zusammen hängen (der sourcecode ist so das die gems nicht für sich alleine getrennt werden können)

außerdem hat das gesamte ruby-gnome sogut wie GARKEINE dokumentation.
und der code ist irgendwie nicht sugar like genug

leider bin ich bei dem projekt noch nicht weit weil ich das halt ganz alleine mache .. :/


Nach oben
 Profil  
 
BeitragVerfasst: 03 Apr 2011, 16:46 
Offline
Interpreter
Benutzeravatar

Registriert: 18 Sep 2008, 22:32
Beiträge: 1821
Wohnort: NRW → UN
@musicmatze: Bitte, antworte nicht auf uralte Themen. Oftmals werden Beispiele und Bibliotheken verwendet, die unter aktuellen Ruby-Versionen gar nicht mehr funktionieren.
musicmatze hat geschrieben:
Aber die aktivität der Nutzer hier ist so gering, dass ich zu keinem Ergebniss gebracht werde... :-(
Ich denke, das hat weniger mit der Aktivität der Nutzer zu tun, als vielmehr mit der Tatsache, dass hier niemand außer Hanmac mit GStreamer arbeitet. :)
Ansonsten kannst du auch mal in andere Bibliotheken wie SDL oder Gosu (mh, gut, das ist zwar eher für Spieleprogrammierung, aber kann auch Musik abspielen) schauen, die sind eventuell leichter bedienbar.
Und wenn es dir hier zu still ist, kann ich dir Ruby-Talk empfehlen, da laufen täglich rund 100 Nachrichten durch.

Vale,
Quintus

_________________
Habe den Mut, dich deines eigenen Verstandes zu bedienen! — Immanuel Kant

Ich bin freischaffender Softwareentwickler und freue mich über jedes neue Projekt. Kontaktinformation auf meiner Website.

Mein Blog | GitHub-Profil | Auf Twitter: @qquintilianus | PGP/GPG-Schlüssel: B1FE 958E D5E8 468E AA20 8F4B F1D8 799F BCC8 BC4F


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 10 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: