• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] xine kann datei nicht öffnen

Spielwurm

Advanced Hacker
Vorweg eins: xine funktioniert bei mir einwandfrei, wenn ich im Dateimanager einen von meinen MPG-Filmen anklicke.

Aber: ich verwalte meine Filme mit datacrow. Dort gibt es eine Möglichkeit, einen Film zu starten. Leider übergibt datacrow bei Dateinamen mit Leerzeichen die einzelnen Worte als einzelne Parameter. Ergo habe ich mir ein Miniscript geschrieben, in dem folgendes steht:

Code:
xine "$*"

Wenn ich das von datacrow starte, dann startet xine auch und gibt folgende Fehlermeldung aus:

Input-Plugin konnte MRL "/media/disk/Emil und die Detektive.mpg" nicht öffnen

Klicke ich auf mehr, dann steht dort:

input_file: Datei nicht gefunden: >'/media/disk/Emil und die Detektive.mpg'<

Die Datei gibt es mit genau dem Pfad und wenn ich sie "normal" anklicke, wird sie sofort und ohne Widerrede abgespielt. Was kann die Fehlerursache sein? Andere Zeichen als Leerzeichen zwischen den Worten können es nicht sein, denn auch Dateien mit nur einem Wort werden nicht abgespielt ...

(Opensuse 10.3 und KDE 3.5)

Hartmut
 
A

Anonymous

Gast
Hallo,

ich kenne datacrow nicht, aber darf ich annehmen, das es sich hier um ein Windows-Programm handelt? Wenn ja, liegt es wohl an der unterschiedlichen Behandlung eines Leerzeichens im Dateinamen in Windows- und Unix-Systemen.
 

oc2pus

Ultimate Guru

damit werden die Leerzeichen trotzdem an xine weitergegeben. Ist also nicht das was du willst :)

du musst in deinem script dafür sorgen das die Leerzeichen "maskiert" werden oder durch "\ " ersetzt werden.

siehe auch hier:
http://safari.informit.com/0596526784/handling_lists_of_parameters_with_blanks


@alpenpinguin
was sollte uns dein Beitrag bringen ?
wenn du zum Thema nichts sagen kannst, dann brauchst du auch nix posten ....
 
A

Anonymous

Gast
An die beiden Vorposter:

Sehr unfreundliche Begrüßung für einen Neuling in diesem Forum.
Darauf kann ich gerne verzichten. Es gibt noch andere Foren.

Und Tschüss.
 
OP
S

Spielwurm

Advanced Hacker
Um es nochmal ganz deutlich zu sagen: Meine Dateinamen enthalten Leerzeichen und xine muss die natürlich auch bekommen. Ein Aufruf in der Konsole

Code:
 xine "/media/disk/Emil und die Detektive.mpg"

ergibt genau das gewünschte Ergebnis. datacrow ist übrigends ein Java-Programm wie auch TV-Browser und ProjectX, die beide keine Schwierigkeiten in der Richtung machen.

An Rainer: Danke!

Hartmut
 

Escho

Advanced Hacker
Schau mal nach, ob dein Aufruf von Xine mit $* nicht ungewollt ein führendes Leerzeichen produziert. In der Bash siehst du das nämlich nicht und denkst, ist doch alles in Ordnung. Und trotzdem geht's nicht.

Edgar
 
OP
S

Spielwurm

Advanced Hacker
Hallo Escho,

danke für den Tipp. Ich habe es gerade nochmal ausprobiert, aber es wird nicht besser. Die Antwort von xine ist genau die wie im Ausgangspost (zeichengenau abgeschrieben).

Hartmut
 

Escho

Advanced Hacker
Nur um meine Neugier zu befriedigen: Bau mal folgendes an den Anfang deines kleinen Scriptes ein und zeig dann mal die Ausgabe von kate:
Code:
echo $* > ~/testdatei_xine
kate ~/testdatei_xine
Edgar
 
OP
S

Spielwurm

Advanced Hacker
Hallo Edgar,

der Tipp scheint gut zu sein, denn die Ausgabe ist

'/media/disk/Emil und die Detektive.mpg'

d.h. die Apostöpher sind zuviel und ich habe das als Anführungszeichen interpretiert. Jetzt muss ich mal überlegen, wo die herkommen ...

Hartmut
 
OP
S

Spielwurm

Advanced Hacker
Schon probiert: gibt den Dateinamen als Einzelparameter aus. Bei xine landet dann nur /media/disk/Emil
Ich sehe mir gerade mal cut und tr an, fällt Dir was ein, wie ich die Apoströffer da wegschneiden kann?
 

Escho

Advanced Hacker
Mir cut und tr kenn ich mich nicht genügend aus, um hier wirklich helfen zu können.

Eines ist mir aber noch aufgefallen. Wenn ich eine Multimedia-Datei mit den einfachen Anführungszeichen in xine starte, dann läuft sie los, wie sie soll. Ich glaube also nicht, daß es daran liegt. Und warum das bei dir einzelne Parameter gibt, wenn du die Anführungszeichen wegläßt, ist mir schleierhaft. Denn mit double-quotes und single-quotes ist es doch doppelt gemoppelt und sollte eigentlich gar nicht funktionieren können (Na ja, tut's ja auch nicht).

Sei es, wie es sei: Ich wünsche noch eine weitere erfolgreiche Suche und eine gute Nacht. Ich bin wahrscheinlich erst Samstag wieder Online.

Edgar
 
OP
S

Spielwurm

Advanced Hacker
Ich kann es noch nicht erklären, aber ich vermute, dass das Problem die Verbindung von der Shell zur grafischen Oberfläche betrifft, denn:

xterm -iconic -display :0.0 -e "xine $*"

funktioniert jetzt. Kann man das einfacher haben? xine --help hat mir nicht gehelft ...

Hartmut
 

oc2pus

Ultimate Guru
Hartmut Krummrei schrieb:
Ich kann es noch nicht erklären, aber ich vermute, dass das Problem die Verbindung von der Shell zur grafischen Oberfläche betrifft, denn:

xterm -iconic -display :0.0 -e "xine $*"

funktioniert jetzt. Kann man das einfacher haben? xine --help hat mir nicht gehelft ...

Hartmut

hast du mein Posting von oben nicht gelesen ?

du übergibst Variablen an ein Script ==> deine Qutoes werden entwertet und das script gibt den String OHNE Quotes an das Programm weiter ==> dieses sieht das als mehrere Parameter an ... das resultierende Problem kennst du :)

In dem Link den ich gepostet habe, steht doch auch die zugehörige Lösung.
 
OP
S

Spielwurm

Advanced Hacker
Hallo oc2pus,

tut mir leid, aber ich habe überhaupt nicht verstanden, was Du mir sagen willst. Ich habe auch das dumme Gefühl, dass das überhaupt nichts mit meinem Problem zu tun hat, denn die Dateinamen kommen mit den Leerzeichen bei xine an, so, wie sie sind und sein sollen. Wenn Du bitte nochmal mein vorheriges Posting liest, ich vermute das Problem eher woanders. Oder Du liegst doch richtig, aber ich bin zu dumm, das zu verstehen ...

Hartmut
 

oc2pus

Ultimate Guru
probiere das:
Code:
#!/bin/bash

for i in "$@"; do
     echo "starte xine mit Parameter __ $i __"
     xine "$i"
done
 
OP
S

Spielwurm

Advanced Hacker
Wie ich erwartet habe: wenn ich den Film /media/disk/Emil und die Detektive.mpg starte, dann startet xine mit:

kann MRL: '/media/disk/Emil' nicht finden

Wenn ich das beende, startet xine und:

kann MRL: 'und' nicht finden

Wenn ich das bende, dann

kann MRL: 'die' nicht finden

und ein letztes Mal

kann MRL: 'Detektive.mpg' nicht finden

Äh, ich finde, da funktioniert meine Methode ein wenig besser ...

Hartmut
 

oc2pus

Ultimate Guru
Äh, ich finde, da funktioniert meine Methode ein wenig besser ...
na dann nimmst du eben deine Methode und markierst den Thread als gelöst :)

hast du das script genauso übernommen, insbesondere die Quotes (") ?

bei mir liefert das Script:
Code:
oc2pus:~/tmp> ./ttt.sh "emil und die Detektive"
starte xine mit Parameter __ emil und die Detektive __

oc2pus:~/tmp> ./ttt.sh emil und die Detektive
starte xine mit Parameter __ emil __
starte xine mit Parameter __ und __
starte xine mit Parameter __ die __
starte xine mit Parameter __ Detektive __
 
OP
S

Spielwurm

Advanced Hacker
copy and paste ... Allerdings sagt mir schon die Schleifenkonstruktion, dass da xine für jeden Parameter einzeln aufgerufen wird.

Hartmut
 
Oben