Javaアプリケーション内からVideoLANプログラムのインスタンスを起動しようとしています。私がこれを試みた方法の1つをここに示します。
Process p = Runtime.getRuntime().exec("\"C:\\Program Files\\VideoLAN\\VLC\\vlc.exe\" \"http://www.dr.dk/Forms/Published/PlaylistGen.aspx?qid=1316859&odp=true\" :sout=#std{access=udp,mux=ts,dst=127.0.0.1:63928}");
上記のコマンドを実行すると、vlcプログラムが起動し、ストリーミング操作が開始されます(接続、バッファリング、ストリーミングの各フェーズを経ます)。
コマンドがRuntimeexec(またはProcessBuilder start)によって実行されると、バッファリングフェーズの終わりに達したときにvlcプログラムがハングします。Javaプログラム内のすべてのスレッドが終了/最後まで実行されると、vlcプログラムはストリーミングフェーズに進みます。javaプロセスは、vlcプロセスが閉じられるまで終了しないため、この動作は明らかに、プロセス間の何らかの結合の結果です。
コマンドを.cmdファイルに書き込んでから実行することにより、間接的にコマンドを実行しようとしましたが、同じ動作になります。
外部プロセスのハングを回避する方法についてのアイデアはありますか?