我想使用 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();
}