Java を使用して名前付きパイプを開き、そのアーカイブ (rar / zip /etc..) の内容を名前付きパイプに抽出し、そのパイプの場所で Mplayer を実行してムービーを再生したいと考えています。
このプロジェクトCLIPCを使用して Java で IPC を開こうとしまし たが、私のコードは fifo.openWriter(); でフリーズしています。ライン
FIFO fifo = new FIFO("jtpc_fifo");
fifo.create();
fifo.openWriter();
接続を待機し、ビデオファイルのコンテンツを生データとして送信するJavaで小さなサーバーソケットを作成しようとしましたが、mplayerにネットワーク経由で生データを取得するように指示する方法がわかりません。
パイプを使用したいのですが、物理的で大きなファイルを処理する必要がなく、揮発性があり、最も柔軟な最良のソリューションだと思います
これは、ソケットを使用するために私が今試みていることですが、Javaサーバーソケットは、mplayerがタイムアウトで失敗した後にのみ接続を受け入れます
mplayer http://localhost:5555/file.raw
try{
String file = "D:\\tmp\\lie.to.me.201.the.core.of.it-sitv.mkv";
ServerSocket socket = new ServerSocket(5555);
System.out.println("UnrarTest.main() START");
Socket s = socket.accept();
System.out.println("UnrarTest.main() ACCEPT");
final InputStream sin = s.getInputStream();
new Thread(){
public void run(){
try{
while(true){
if(sin.available() > 0){
int read = sin.read();
System.out.println((char)read);
}
}
}catch(Exception ee){
ee.printStackTrace();
}
}
}.start();
final OutputStream sout = s.getOutputStream();
final FileInputStream fin = new FileInputStream(file);
new Thread(){
public void run(){
try{
while(fin.available() > 0){
int in = fin.read();
System.err.println(in);
sout.write(in);
}
}catch(Exception ee){
ee.printStackTrace();
}
}
}.start();
}catch(Exception e){
e.printStackTrace();
}