Реализовать потоковое видео в java me используя rtsp

Я хочу реализовать video streaming in java я использую URL-адрес RTSP. При тестировании кода на устройствах я получаю Media Exception Prefetch Error-33, Вот мой код

    private void startStreaming()
    {
      try 
      {
        mplayer=Manager.createPlayer(videourl);

        mplayer.addPlayerListener(this);

        mplayer.realize();

        videoControl=(VideoControl) mplayer.getControl("VideoControl");

        if(videoControl!=null)
        {
            Item video=(Item) videoControl.initDisplayMode(videoControl.USE_GUI_PRIMITIVE, null);

            videoControl.setVisible(true);

            System.out.println("Playing");

            Form v=new Form("Playing Video");

            StringItem si=new StringItem("Status", "Playing....");

            v.append(video);

            display.setCurrent(v);
        }

        mplayer.prefetch();

        mplayer.start();
    } 

    catch(Exception noCanDo)
    {
        Form f=new Form("Error");

        f.append("Error : "+noCanDo);

        display.setCurrent(f);
    }
}

Я также попытался использовать альтернативный метод использования метода MIDlet.platformrequest (videourl), который вызывает внутренний проигрыватель устройства по умолчанию для воспроизведения видеофайлов. Плеер запускается, но позже connection timeout подсказка происходит. Однако я проверил URL-адрес RTSP, и он работает очень хорошо. Любые предложения относительно того, как я могу сделать потоковое видео, используя URL-адрес RTSP в Java Java?

1 ответ

Используйте этот код для потоковой передачи RTSP, он должен работать для Nokia Symbian Belle SDK 1.1 и Nokia SDK 2.0

protected void startApp() throws MIDletStateChangeException {
        VideoCanvas VC = new VideoCanvas(this,url); 
        Display.getDisplay(this).setCurrent(VC); }

    }
    //videoCanvas Class

    public VideoCanvas(ExampleStreamingMIDlet midlet, String url) {
            this.midlet = midlet;
            this.url = url;
            addCommand(start);
            addCommand(stop);
            addCommand(back);
            addCommand(exit);
            setCommandListener(this);
            this.setFullScreenMode(true);
        }

    public void commandAction(Command c, Displayable arg1) {
            if(c == start) {
                start();
            }




    public void start() {
            try{

               Player player = Manager.createPlayer(url);
                player.addPlayerListener(this);
               player.realize();


                control = (VideoControl)player.getControl("VideoControl");
                if (control != null) {
                    control.initDisplayMode(VideoControl.USE_DIRECT_VIDEO,this);
                    control.setDisplaySize(176,144);
                    int width = control.getSourceWidth();
                    int height = control.getSourceHeight();
                    status2 = "Before: SW=" + width + "-SH=" + height + "-DW=" + control.getDisplayWidth() + "-DH=" + control.getDisplayHeight();
                }

                player.start();
            }
            catch(Exception e) {
                Alert erro = new Alert("Erro",e.getMessage(),null,AlertType.ERROR);
                Display.getDisplay(midlet).setCurrent(erro);
            }
        }

    public void stop() {
            if(player != null) {
                player.deallocate();
                player.close();
            }
        }
Другие вопросы по тегам