无法创建MediaPlayer

时间:2014-01-12 13:04:48

标签: java-me media-player rtsp-client

我已经下载了代码 - 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。

1 个答案:

答案 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即可。然后它应该启动手机的默认媒体播放器并播放流。