Schrift
[thread]5803[/thread]

MP3-Player: Erstellung eines MP3-Player (Seite 2)



<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten
foobar
 2003-10-06 23:27
#61356 #61356
User since
2003-08-04
69 Artikel
BenutzerIn
[default_avatar]
Unter Linux lässt sich Xmms auch sehr einfach mit Perl ansteuern. Guckst du hier: http://search.cpan.org/search?query=xmms&mode=module
The three chief virtues of a programmer are: Laziness, Impatience and Hubris
[Larry Wall]
format_c
 2003-10-06 23:38
#61357 #61357
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
Es ging auch darum nur so wenig wie möglich Performanz zu vergeuden. xmms bedeutet GUI bedeutet Performanzverschwenung.

Gruß Alex
Dubu
 2003-10-07 00:07
#61358 #61358
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Als Backend empfehle ich mpg123. Laesst sich fernsteuern (s. Manpage) und liefert mit -v Frames und Zeiten an STDERR.
betterworld
 2003-10-07 20:39
#61359 #61359
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
MPlayer ist eigentlich DAS Freeware-Programm um MP3 oder auch Videos abzuspielen (ich glaube das hier ist die Homepage). Nicht zu verwechseln mit dem Media Player von Micro$oft.
MPlayer laesst sich auch gut von anderen Programmen steuern (hab ich zumindest gelesen). Ausserdem kann er sogar ueber die Infrarot-Schnittstelle bedient werden :) auch wenn das hier wohl nicht so hilft.
Ishka
 2003-10-07 21:03
#61360 #61360
User since
2003-08-04
771 Artikel
HausmeisterIn
[Homepage] [default_avatar]
ich denke mpg123 dürfte um einiges kleiner sein, als mplayer - weils auch wirklich nur mp3s kann (und nicht wie mplayer fast alles)
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
pq
 2003-10-08 15:37
#61361 #61361
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Dubu,06.10.2003, 22:07]Als Backend empfehle ich mpg123. Laesst sich fernsteuern (s. Manpage) und liefert mit -v Frames und Zeiten an STDERR.[/quote]
interessant; hab den mal installiert. ich habe auch mal meinen eigenen mp3-player
geschrieben und bisher xaudio verwendet, aber mpg123 klingt besser, weil
man bestimmte frames direkt ansteuern kann. jetzt frage ich mich nur noch,
wie starte ich mpg123, so dass ich gleichzeitig STDERR auf STDOUT
umleite (also mit open PIPE, ...) *und* die pid des prozesses rauskriege?
ich denke irgendwie, das kann so schewr nicht sein, aber ich komm nicht
drauf.
wenn ich STDERR nicht umleiten will, kann ich ja
 my $pid = open PIPE, "-|", "mpg123", $file or die $!;
verwenden.
mit umleitung wäre es:
 my $pid = open PIPE, "mpg123 -v '$file' 2>&1|" or die $!;
dann ist $pid aber die pid der geöffneten shell, ich brauche
aber zum ansteuern (etwa ein SIGTSTP senden) die richtige pid.

jemand eine idee?
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
betterworld
 2003-10-08 17:01
#61362 #61362
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Vielleicht so:
Code: (dl )
my $pid = open PIPE, "-|", "sh", "-c", 'mpg123 "$0" 2>&1', $file or die $!;

ist natuerlich etwas lame, weil man extra eine Shell startet, aber koennte klappen. Bin mir aber nicht sicher, da ich ehrlich gesagt gar nicht genau weiss, was "-|" tut, aber ich hab es Dir einfach mal abgeguckt.
Edit: hab es gerade getestet und es scheint zu funktionieren.
Edit: nein, alles falsch, $pid ist auch hier nur die Shell\n\n

<!--EDIT|betterworld|1065618460-->
betterworld
 2003-10-08 17:05
#61363 #61363
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=Ishka,07.10.2003, 19:03]ich denke mpg123 dürfte um einiges kleiner sein, als mplayer - weils auch wirklich nur mp3s kann (und nicht wie mplayer fast alles)[/quote]
Wenn es Dir zu gross ist, brauchst Du ja nur die entsprechenden Komponenten zu installieren.
betterworld
 2003-10-08 17:15
#61364 #61364
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
Jetzt hab ich es:
Code: (dl )
my $pid = open PIPE, "exec mpg123 -v '$file' 2>&1|" or die $!;

Edit: ist uebrigens dumm, wenn ein ' im Dateinamen vorkommt. Daher empfehle ich, mal zu versuchen, ob meine Loesung von oben auch irgendwie mit exec funktioniert. Wenn Du nicht willst, nimm lieber " als Trennzeichen, denn das kommt seltener in MP3-Titeln vor als '\n\n

<!--EDIT|betterworld|1065619698-->
pq
 2003-10-08 19:00
#61365 #61365
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=betterworld,08.10.2003, 15:15]Jetzt hab ich es:
Code: (dl )
my $pid = open PIPE, "exec mpg123 -v '$file' 2>&1|" or die $!;
[/quote]
na prima, dann werde ich das nachher mal ausprobieren!
Quote
Edit: ist uebrigens dumm, wenn ein ' im Dateinamen vorkommt. Daher empfehle ich, mal zu versuchen, ob meine Loesung von oben auch irgendwie mit exec funktioniert.

nein, das dürfte nicht gehn; entweder man übergibt jeden parameter einzelln => keine shell, oder man übergibt einen
string => shell. für das 2>&1 braucht man leider die shell.
ich hatteschon versucht, STDERR vor dem open selbst
umzuleiten, aber das funktionierte auch nicht. schön fände ich
eine option von mpg123, mit der man den output handle selbst
festlegen kann. naja, ich probiers heut abend mal aus...
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< |< 1 2 3 >| >> 22 Einträge, 3 Seiten



View all threads created 2003-10-06 17:16.