#!/usr/bin/perl use strict; use warnings; use utf8; use Glib qw(TRUE FALSE); use GStreamer -init; my $loop = Glib::MainLoop -> new(undef, FALSE); #pipeline erzeugen # audiotestsrc freq=1000 ! audioconvert # ! audiochebband mode=band-pass,lower-frequency=1200,upper-frequency=1900 # ! audioconvert ! audioresample ! vorbisenc ! gdppay ! tcpclientsink port=3172 # my $pipeline = GStreamer::Pipeline->new("my_pipeline"); my( $src, $conv1, $filter, $conv2, $sample, $vorbis, $gdpplay, $sink ) = GStreamer::ElementFactory -> make( # demo in audiotestsrc => "sound_src", # alsa audio src # alsasrc => "sound_src", # filter audioconvert => "sound_conv1", audiochebband => "sound_filter", audioconvert => "sound_conv2", # demo out # alsasink => "sound_sink", # netwetzwerk out # # resample für stream audioresample => "sound_sample", # mp3 enkodieren vorbisenc => "sound_vorbis", # gstreamer netzwerk protokoll gdppay => "sound_encoder", # netzwerk ausgabe tcpserversink => "sound_sink", ); # werte setzen: # Einsetllungen für die Quelle # beim Sounddemo die Fequenz: $src->set(freq => 1000); # wenn es ein alsa source gerät ist: #$src->set(device => 'hw:1'); # Filter werte einstellen $filter->set(mode => 'band-pass'); $filter->set('lower-frequency' => 1200); $filter->set('upper-frequency' => 1900); # IP/Port auf der gesendet wird $sink->set(host => "127.0.0.1"); $sink->set(port => 3172); # Pipeline zusammenfügen $pipeline->add($src, $conv1, $filter, $conv2, $sample, $vorbis, $gdpplay, $sink); # reihenfolge festlegen $src->link($conv1, $filter, $conv2, $sample, $vorbis, $gdpplay, $sink); # einen Überwachungs-loop installieren my $count=70; Glib::Timeout->add (1000, sub{ # überwache den server ... print "running "; print $count--; print "\n"; $loop->quit() unless($count); }); # pipeline starten $pipeline->set_state("playing"); # eventloop starten $loop->run(); # pipeline stoppen $pipeline->set_state("null");