Tom2 (der authentifizierte): IO-Streams

Beitrag lesen

Hi Leute

Ich versuche den MPlayer auf meinem Webserver fernzusteuern, doch leider komme ich nicht sehr weit: Ich kann zwar den MPlayer über den Webserver auf meinem Mac starten und erhalte dann auch ein Fenster, in dem der Film abgespielt wird, jedoch weiss ich nicht wie ich die Ein- und Ausgabe-Streams handhaben soll.

Ich habe gelesen, dass stdin, stdout und stderr eine Art Dateien seien. Nun wollte ich, damit ich den MPlayer über's Web bedienen kann,  stdin auf eine richtige Datei umleiten

print exec('mplayer -vo macosx /Daten/Movies/Magnolia.avi 0<clients/web01.in 1>clients/web01.out');

und mit einem Perl-Skript die Kommandos in diese Datei schreiben.

print "Eingabe-Datei zur Übergabe von Kommandos öffnen...\n";
 open(OUT, ">clients/web01.in");
 print OUT ' '; # Ein Leerschlag um den Film anzuhalten
 close(OUT);

Doch leider klappt das nicht. Ich kann dem MPlayer zwar über die Datei web01.in das Pausen-Kommando geben (Hex-Editor, die Datei darf wirklich nur 0x20 enthalten), aber mit Perl geht das nicht wie ich mir das vorstelle.

Krieg ich das irgendwie hin oder bin ich völlig auf dem Holzweg? Bin für jeden Hinweis dankbar.

Gruss

Tom2

Hier das Perl-Skript (eines meiner ersten):

#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

require 'cgi-lib.pl';
print PrintHeader();
print "<pre>Try to start mplayer...\n";

Hier öffnet sich das Fenster mit dem MPlayer, und das Skript

wird abgebrochen

print exec('mplayer -vo macosx /Daten/Movies/Magnolia.avi 0<clients/web01.in 1>clients/web01.out');

Die folgenden Zeilen werden bereits nicht mehr bearbeitet.

In etwa so stelle ich mir das IO-Handling vor... (?:-)

print "Eingabe-Datei zur Übergabe von Kommandos öffnen...\n";
open(OUT, ">clients/web01.in");
print OUT ' '; # Ein Leerschlag um den Film anzuhalten
close(OUT);

print "Ausgabe-Datei öffnen\n";
open(IN, "clients/web02.out");
my $zeile;
while ($zeile = <IN>) {
 print "$zeile";
}
close(IN);
print "\n\nEnde</pre>";