我已经下载了代码 - Experiments in Streaming Content in Java ME by Vikram Goyal
但是在尝试使用模拟器运行应用程序后,运行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();
}
}
我尝试了一些媒体类型,但我收到了错误。 如何解决? 谢谢, 的Eyal。
答案 0 :(得分:2)
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 Feed是否正常工作,只需在手机浏览器中输入该URL即可。然后它应该启动手机的默认媒体播放器并播放流。