VLC + Lied über Java starten

Hallo,
ich versuche gerade den VLC-Player + Lied nach Drücken eines Buttons zu starten.

An sich funktioniert das auch, nur wird das Lied nicht abgespielt.

Das heißt VLC öffnet sich, nach Drücken des Buttons, nur abgespielt wird nichts.


Hier mal der Code:
Java:
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class SimpleVLCPlayerExample{
	private Process vlcprocess;
	public String path = "C:/Program Files (x86)/VideoLAN/VLC/vlc.exe";
	public String file = "C:/Users/Pa/workspace/FilmDatenbank/src/KPF.mp3";
	public SimpleVLCPlayerExample(){
		JFrame frame = new JFrame();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JButton button = new JButton("start");
		button.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				stream(file);
			}
		});
		frame.add(button);		
		frame.pack();
		frame.setSize(500, 300);
		frame.setVisible(true);
	}
	
	public static void main(String[] argv){
		SwingUtilities.invokeLater(new Runnable(){
			public void run(){
				new SimpleVLCPlayerExample();
			}
		});		
	}
	
	public void stream(String channel){
		String cmd = path+" "+channel ;
		System.out.println("starte vlc mit: "+cmd);
		try {
			Runtime.getRuntime().exec(path);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

Ich hoffe ihr könnt mir helfen :).
 

Bernd Hohmann

Top Contributor
Du hättest "cmd" statt "path" an .exec(..) übergeben sollen

Bernd

[edit: der rest war käse, bezieht sich nur auf ProcessBuilder]
 
Zuletzt bearbeitet:
Hallo, erst mal danke für die Antwort.

Ja so hatte ich es gestern auch, hatte nur vergessen das wieder zurück zu ändern.

Leider behebt das das Problem nicht. Es passiert genau das gleiche.

Der VLC-Player startet, aber das Lied wird nicht abgespielt.

Es ist praktisch so, als würde das Lied gar nicht mit übergeben werden, denn wenn ich im VLC-Player auf play klicke, erscheint das "Medium öffnen" Fenster.
 

Ark

Top Contributor
Das Problem dürften die Leerzeichen in path sein: Java versucht deshalb immer, das Programm "C:/Program" auszuführen.

Probier mal so was wie
Java:
Runtime.getRuntime().exec(new String[]{path, channel});
und ersetze die / in deinen Pfadangaben durch \ (im String-Literal wie "\\"), denn die Argumente werden wörtlich an den neuen Prozess übergeben. Unter Windows könnte das mit den / sonst möglicherweise falsch verstanden werden.

Ark
 
Klappt leider auch nicht.

An den Leerzeichen kann es ja eigentlich nicht liegen, da der VLC-Player ja ohne Probleme aufgerufen wird und in dem Pfad von dem Lied sind keine Leerzeichen enthalten.
 

Ark

Top Contributor
An den Leerzeichen kann es ja eigentlich nicht liegen, da der VLC-Player ja ohne Probleme aufgerufen wird und in dem Pfad von dem Lied sind keine Leerzeichen enthalten.
Hm, da ist was dran. ^^

Kopier doch mal die Datei in das Arbeitsverzeichnis, in dem du dein Java-Programm ausführst, und setze [c]file = "KPF.mp3"[/c]. Was passiert dann? Starte VLC außerdem mal mehr verbose (mit "-vvv" oder so), vielleicht sagt er ja, wo das Problem ist.

Ark
 
Das mit dem Arbeitsverzeichnis hatte ich auch versucht, nutzt nichts :D.

Die Sache mit dem -vvv.. meinst du das als Startparameter im VLC selber, oder ihinten an den String anhängen, d.h."C:\\Program Files (x86)\\VideoLAN\\VLC\\vlc.exe-vvv".

Zweiteres funktioniert nicht, ersteres bekomm ich nicht hin, da ich bei Win7 nicht weiß wie man Startparameter setzt. :oops:.

Mich würde mal interessieren, ob es denn bei anderen funktioniert, denn dann wird es ja offensichtlich nicht am Code sondern an meinen privaten Einstellungen liegen.


E: Ok ich habe nun mal im VLC "Ziel"-Pfad per Rechtsklick "C:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "-vvv" eingefügt. Ändert leider auch nichts
 
Zuletzt bearbeitet:

Ark

Top Contributor
Also, unter Linux würde ich wahrscheinlich (da ich vlc nicht installiert habe ^^) einfach mal eine Shell (für Windoof-Nutzer: Eingabeaufforderung oder so ^^) starten und dort
Code:
vlc -vvv KPF.mp3
eingeben und hoffen, dass alles funktioniert. Wenn nein, würde ich erst einmal dort so lange am Befehl rumschrauben, bis es geht.

Anschließend würde ich genau dieselbe Zeile (unter Berücksichtigung von Escape-Sequenzen etc.) bei [c]exec()[/c] eingeben und gucken/hoffen, dass es da dann auch funktioniert.

Da ich diesen Spielekonsolen-Verschnitt aka Windows nicht habe, kann ich das da leider nicht so nachstellen.

Ark
 
Zuletzt bearbeitet:

diggaa1984

Top Contributor
ich hab hier mal was
Java:
import java.awt.Desktop;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
 
public class SimpleVLCPlayerExample{
    private Process vlcprocess;
    public String path = "\"D:\\VLC_2_0_1\\vlc.exe\" --started-from-file \"";
    public String file = "C:\\Users\\diggaa\\Desktop\\Foo mit Leerzeichen.mp3";
    public SimpleVLCPlayerExample(){
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button = new JButton("start");
        button.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e){
                stream(file);
            }
        });
        frame.add(button);      
        frame.pack();
        frame.setSize(500, 300);
        frame.setVisible(true);
    }
    
    public static void main(String[] argv){
        SwingUtilities.invokeLater(new Runnable(){
            public void run(){
                new SimpleVLCPlayerExample();
            }
        });     
    }
    
    public void stream(String channel){
        String cmd = path.concat(channel) + "\"";
        System.out.println("starte vlc mit: "+cmd);
        try {
            Runtime.getRuntime().exec(cmd); //hier hattest du path drin!
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

in der registry fand ich folgendes:
  • Add to playlist - "D:\VLC_2_0_1\vlc.exe" --started-from-file --playlist-enqueue "%1"
  • Open - "D:\VLC_2_0_1\vlc.exe" --started-from-file "%1"
  • Play with VLC - "D:\VLC_2_0_1\vlc.exe" --started-from-file --no-playlist-enqueue "%1"

habe mich erstmal an Open orientert ..
[EDIT]ok so gehts nun .. du hattest "path" statt "cmd" an exec übergeben![/EDIT]
 
Zuletzt bearbeitet:
Ich habe letztendlich den Code von diggaaa1984 kopiert und durch meine Pfade ersetzt.

Scheint also wirklich an der path/cmd Verwechslung und an der Pfadangabe gelegen zu haben.
 

diggaa1984

Top Contributor
Und was hast Du jetzt geändert damit es geht?

Bernd

ja also wesentlicher Fehler war wirklich die Verwechslung der Parameter für exec .. selbst mit korrekten Pfaden hatte VLC einen kompletten Ordner abgespielt, eben den durch path angegebenen .. was nicht schön war ^^

Pfade korrigiert (Aufruf mit parameter wie in Registry) und Änderung des Parameters an exec und es lief. Der Code an sich war soweit ja in Ordnung.
 
Ich hätte noch eine kleine Frage und zwar:

Kann man irgendwie das Problem lösen, dass Lieder/Filme etc. nicht gelesen werden können, die ein Leerzeichen im Namen enthalten?

Ich weiß, Dateinamen sollten generell keine Leerzeichen enthalten :D allerdings wäre es enorm viel Arbeit das zu ändern. Also gäbe es da eine Möglichkeit?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C mp3-Lied Dauer berechnen Allgemeine Java-Themen 1
T Nächstes Lied in Itunes Allgemeine Java-Themen 15
S JMF & Lied immer wiederholen Allgemeine Java-Themen 7
kodela Datenübergabe über Buttons Allgemeine Java-Themen 8
W Jar-File Start nur über Terminal Allgemeine Java-Themen 13
A ByteArray über Socket Allgemeine Java-Themen 3
berserkerdq2 Text über einen Shape anzeigen (Scenebuilder) Allgemeine Java-Themen 1
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
TheSkyRider Methode über DataInputStream "auslösen" Allgemeine Java-Themen 6
I OpenPDF erzeugt riesige PDFs, wenn Grafiken über PdfGraphics2D#drawImage gezeichnet werden Allgemeine Java-Themen 1
T Etikettendrucker über TCP-IP Allgemeine Java-Themen 1
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
B HTTP Allgemeine Fragen über Suchmaschine nutzen mit Java Allgemeine Java-Themen 20
torresbig Klasse mit extends Calendar über Methoden ändern (Hirnblockade) Allgemeine Java-Themen 7
B Liste ändern während Iteration über Diese? Allgemeine Java-Themen 16
Master3000 Java Konsole über Buffered Reader Zeilenweise auslesen ? Allgemeine Java-Themen 26
J Daten über serielle Schnittstelle empfangen Allgemeine Java-Themen 4
L Aufwandsabschätzung: Android-App Aufnahmefunktion (foto) und zweiter Ebene über dem Foto (teiltransparent) Allgemeine Java-Themen 6
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
OSchriever Programm über Linux-Kommandozeile ausführen Allgemeine Java-Themen 20
J Namen von Methoden über Reguläre Ausdrücke bearbeiten Allgemeine Java-Themen 6
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
W Variablenübergabe über mehrere Klassen Allgemeine Java-Themen 4
N Über einen Button in JavaFX ein Event über eine Pipeline schicken(Netty) Allgemeine Java-Themen 1
M Threads über Kommandozeile Allgemeine Java-Themen 5
david19 Software AE über Domain laufen lassen Allgemeine Java-Themen 0
Q Selbständig ActionEvent auslösen zum Daten senden über serielle Schnittstelle Allgemeine Java-Themen 7
T Problem mit externen Datenbankzugriff über SSH Tunnel Allgemeine Java-Themen 4
K Auf Dateiverzeichnis extern zugreifen (evtl über XML??) Allgemeine Java-Themen 22
C VisualVM oder Jconsole über Jolokia-Proxy Allgemeine Java-Themen 0
G USB-Pins über Java ansteuern Allgemeine Java-Themen 8
Ernesto95 Best Practice Localization über ResourceBundle Allgemeine Java-Themen 6
C Classpath Neue Klasse über einen Button ausführen Allgemeine Java-Themen 3
C Auslesen auslösen über Button-Click Allgemeine Java-Themen 8
M Fragen beantworten über Textfeldeingabe Allgemeine Java-Themen 5
AssELAss Best Practice Checksumme über jede Spalte zweier Tabellen und vergleichen Allgemeine Java-Themen 3
T Strings über Bluetooth zwischen PC,µc oder Samrtphone senden und empfangen Allgemeine Java-Themen 0
F Try/catch über ganze Klasse Allgemeine Java-Themen 9
kodela Eigenartige Datumsberechnung über GregorianCalendar Allgemeine Java-Themen 15
HarleyDavidson Best Practice Integer-Zahlenfolge über mehrere Programmstarts Allgemeine Java-Themen 7
T .jar über cmd ausführen (später dann batch) Allgemeine Java-Themen 6
F In OSX: Java-Programm über URI-Scheme aufrufen mit Parameter? Allgemeine Java-Themen 0
C Input/Output Zip Files über Socket senden und empfangen Allgemeine Java-Themen 6
M WebService - Zugriff auf Webservice Methode über Browser Allgemeine Java-Themen 1
C .jar File lässt sich nur über Konsole öffnen Allgemeine Java-Themen 1
L Videodateien über Java öffnen unabhängig vom Format Allgemeine Java-Themen 4
Thallius Hash über serialisiertes Objekt? Allgemeine Java-Themen 3
A Threads Lock über mehrere Abschnitte in verschiedenen Methoden Allgemeine Java-Themen 5
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
L Prüfen, ob Programm über 32bit oder 64bit Java ausgeführt wird Allgemeine Java-Themen 4
F Content-Disposition ermitteln über URL Allgemeine Java-Themen 2
ARadauer Checksumme über BigDecimal Werte Allgemeine Java-Themen 11
A Class Datei aus Verzeichnis über URLClassLoader laden Allgemeine Java-Themen 2
G Darstellung von Ergebnissen einer Dokumentensuche über eine JTable Allgemeine Java-Themen 19
M HTML-Code von Webseite über Browser oder Console auslesen?? Allgemeine Java-Themen 5
A Sinuston ausgeben und über Mikro Amplitude messen – machbar? Allgemeine Java-Themen 6
R Java-Progamm über Icon starten unter Windows Allgemeine Java-Themen 9
C Daten über URL an PHP verschicken Allgemeine Java-Themen 4
O Fragen über Fragen - Bei Änderung XML-Datei -> Anpassung GUI Allgemeine Java-Themen 7
aze Jar ausführen über Runtime.execute funktioniert nicht Allgemeine Java-Themen 4
S NoSuchMethodError beim Ausführen einer C Methode über JNI Allgemeine Java-Themen 5
H OOP Daten über TCP Allgemeine Java-Themen 5
Pastafari Iterator über nested HashMaps Allgemeine Java-Themen 7
R ListIterator über mehrere Arrays Allgemeine Java-Themen 13
G Interface Laden der Konfiguration über Interfaces sinnvoll? Allgemeine Java-Themen 28
D Player Objekt - Frame über Server anzeigen lassen. Allgemeine Java-Themen 3
B VoIP-Gespräche über Computer führen Allgemeine Java-Themen 3
S Jar-File startet nicht über doppelklick Allgemeine Java-Themen 2
C Java Programm über SSH starten Allgemeine Java-Themen 16
K Internetverbindung über PuTTy herstellen?! Allgemeine Java-Themen 9
C Kapselung Warum graift man auf Variablen nur über Methoden und nich direkt zu? Allgemeine Java-Themen 10
G Auf Kommandozeile über Processobjekt mit Outputstream Allgemeine Java-Themen 3
S Input/Output Binärdatei über Bytestreams Allgemeine Java-Themen 4
S Kommunikation von Core und GUI über Schnittstellen Allgemeine Java-Themen 2
J Explorer über Code starten Allgemeine Java-Themen 15
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
L Java und Javascript um Distanz über Google Maps zu berchnen Allgemeine Java-Themen 10
B UNIX Shell befehl über JavaCode ausführen Allgemeine Java-Themen 19
D Java Excel API - Schreiben in Excel lässt sich nicht über Makro starten Allgemeine Java-Themen 18
M Ampelsteuerung über Timer in Java realisieren Allgemeine Java-Themen 3
L CMD über Java öffnen Allgemeine Java-Themen 8
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
R Klasse über Button Event in anderer Klasse informieren Allgemeine Java-Themen 11
R Frequenzausgabe (2 Kanal) über Lautsprecherausgang Allgemeine Java-Themen 22
J Java-Klasse über Konsole starten Allgemeine Java-Themen 6
E FF Einstellungen über Programm ändern? Allgemeine Java-Themen 7
D JVM kann nicht über die jvm.dll gestartet werden? Allgemeine Java-Themen 1
S File im windowexploer öffnen über java Allgemeine Java-Themen 6
J Receive eines Hex-Bytes über COM-Port Allgemeine Java-Themen 4
Nicer Prozess über Prozessnamen beenden Allgemeine Java-Themen 15
reibi File über FileChannel locken Allgemeine Java-Themen 5
B Serialisierung mit Unterobjekten über Netzwerk Allgemeine Java-Themen 3
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
B parallele / Multithreaded Iteration über Map Allgemeine Java-Themen 12
D Unix/Linux Benutzer-Authentifikation über Java Allgemeine Java-Themen 3
M Tastatur eingabe über Buttons Allgemeine Java-Themen 15
S GPS-Maus über USB ansprechen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben