日期:2014-05-20  浏览次数:20733 次

100分提问!!
vlc   player是一个能提供组播服务的播放器

本人要实现以下功能:
把vlc   player打开并提供组播,然后在一定时间过后将vlc   player关闭,代码如下:

String   cmd= "c:\\Program   Files\\VideoLAN\\VLC\\vlc   -vvv   e:\\audio\\yourcolor.mp3   --sout   udp:[ff09::1] ";
//上面一行打开vlc并提供组播

//String   cmd= "c:\\Program   Files\\VideoLAN\\VLC\\vlc   e:\\audio\\yourcolor.mp3 ";
//上面一行仅仅代开vlc并播放一个本地文件

Process   p=Runtime.getRuntime().exec(cmd);
Thread.sleep(5000);
p.destroy();

现在出现的问题是用了sleep做延迟时间后,vlc的界面并不显示出来,抓包看也不向组播地址发送数据,但是进程列表中有vlc.exe,5秒钟后程序结束,同时把vlc关闭。
但是如果不开组播,仅仅时播放一个本地文件则程序和我的预期一样。
另外计时的方法我还用过java.util.Timer结果和上面。
请问这个问题如何解决

------解决方案--------------------
uppppppppp
------解决方案--------------------
代码能不能多贴些,没有办法测试呀,
------解决方案--------------------
组播 什么意思? 一组组的播--播放列表
------解决方案--------------------
你在Windows里直接运行 "c:\\Program Files\\VideoLAN\\VLC\\vlc -vvv e:\\audio\\yourcolor.mp3 --sout udp:[ff09::1] "有什么反应?

如果结果不是预期的,那么请在这个命令上找原因。
如果结果是预期的,那么再回来在这个程序上找原因。

建议把你的程序都帖过来!
------解决方案--------------------
很难讲。
------解决方案--------------------
接点分啊~~~
UP~
------解决方案--------------------
husl(胡少磊) :
就是放一个电影什么的,然后别人可以通过网络观看,和点播是相对的
你现在用VLC播放器实现?这个应该用JMF,你这个就算实现了也跟JAVA没关系,只不过去掉个播放器而已.这还不如研究下播放器
------解决方案--------------------
用wait()试一试
------解决方案--------------------
路过,友情up!
------解决方案--------------------
修改如下:
Process p=Runtime.getRuntime().exec(cmd);
p.waitFor();//阻塞,直到cmd执行完毕。。。
Thread.sleep(5000);
p.destroy();
------解决方案--------------------
不懂,接分!
------解决方案--------------------
Process p=Runtime.getRuntime().exec(cmd);
Thread.sleep(5000);
p.destroy();
------------------------------------------------
可以p.getErrorStream()看看有什么异常啊,就这个代码看不出有什么的.
我估计是分隔符的问题,你把String cmd= "c:\\Program Files\\VideoLAN\\VLC\\vlc -vvv e:\\audio\\yourcolor.mp3 --sout udp: 的文件分隔符换成"/"试试.
------解决方案--------------------
作业?
------解决方案--------------------
可能是由于进程之间的关系,Process p=Runtime.getRuntime().exec(cmd);启动一个子进程,但由于主进程休眠所以子进程就不显示了.

---------------------------------------------
修改如下:
Process p=Runtime.getRuntime().exec(cmd);
p.waitFor();//阻塞,直到cmd执行完毕。。。
Thread.sleep(5000);
p.destroy();

------------------------------------------------
这个方法可以试试.

------解决方案--------------------
up
------解决方案--------------------
Process p=Runtime.getRuntime().exec(cmd);
p.waitFor();//阻塞,直到cmd执行完毕。。。
Thread.sleep(5000);
p.destroy();
就可以了吧
------解决方案--------------------
帮顶~接分~~~~~~~~
------解决方案--------------------