我已经下载了-Vikram Goyal 在Java ME中进行流式传输内容的实验
但是,在运行Darwin Stream Server之后,尝试使用模拟器运行应用程序时我得到以下错误-
Midlet->startApp
StreamingDataSource->StreamingDataSource
StreamingDataSource->getContentType
StreamingDataSource->getLocator (locator = rtsp://127.0.0.1/sample_100kbit.avi)
javax.microedition.media.MediaException: Player cannot be created for video/avi
at javax.microedition.media.Manager.createPlayer(), bci=135
- com.iprs.test.Midlet.startApp(Midlet.java:14)
at javax.microedition.midlet.MIDletTunnelImpl.callStartApp(), bci=1
at com.sun.midp.midlet.MIDletPeer.startApp(), bci=5
at com.sun.midp.midlet.MIDletStateHandler.startSuite(), bci=261
at com.sun.midp.main.AbstractMIDletSuiteLoader.startSuite(), bci=38
at com.sun.midp.main.CldcMIDletSuiteLoader.startSuite(), bci=5
at com.sun.midp.main.AbstractMIDletSuiteLoader.runMIDletSuite(), bci=144
at com.sun.midp.main.AppIsolateMIDletSuiteLoader.main(), bci=26
Midlet->destroyApp
这是StartApp方法-
public void startApp() {
try {
System.out.println("Midlet->startApp");
// create Player instance, realize it and then try to start it
Player player = Manager.createPlayer(new StreamingDataSource("rtsp://127.0.0.1/sample_100kbit.avi")); //(new StreamingDataSource("rtsp://localhost:554/tuner1.wav")); //sample.mp3")); //sample_100kbit.mp4"));
player.realize();
player.start();
} catch(Exception e) {
e.printStackTrace();
}
}
我尝试了一些媒体类型,但我得到了错误。如何解决?谢谢埃亚尔。
IP地址127.0.0.1始终指向您正在使用的设备。因此,当在MIDlet中使用时,它指向运行MIDlet的手机。换句话说,您正试图将文件从手机流式传输到手机。
这当然不起作用,因为你的手机上没有运行的网络服务器。
要使其工作,您应该找出服务器的正确IP地址。
如果你的手机是通过WiFi连接的,你很可能会使用本地IP,如10.0.0.x或192.168.0.x
如果你的手机是通过GPRS或3G连接的,你需要使用www.whatismyip.com等服务来确定你的台式电脑在互联网上的IP地址之后,你必须确保你的服务器是可访问的。换句话说,请确保路由器允许RTSP协议使用的特定端口上的流量,并将该端口上的通信引导到服务器。
要一步一个脚印,最好在谷歌上搜索现有的RTSP流,然后先尝试一下。这样,您就会知道您的JavaME代码运行良好。
据我记忆所及,使用JavaME(至少在较新的手机上)播放RTSP流是相当直接的。应该使用标准播放器运行,不需要任何其他类。
请参阅:J2ME/StreamingMedia.htm">http://www.java2s.com/Tutorial/Java/0430_J2ME/StreamingMedia.htm
您还应该能够测试某个RTSP提要是否正常工作,只需在手机浏览器中输入URL即可。然后,它应该启动手机的默认媒体播放器并播放流。