«Неподдерживаемый тип» при воспроизведении живого видеопотока на BlackBerry - PullRequest
0 голосов
/ 31 декабря 2010

Я пытаюсь воспроизводить живое видео с ip-камеры на моем устройстве BlackBerry. Я получаю исключение неподдерживаемого типа при попытке воспроизвести видео.

package com.bb.play;

import javax.microedition.media.Player;
import javax.microedition.media.Manager;
import javax.microedition.media.control.VideoControl;
import net.rim.device.api.ui.container.MainScreen;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.system.Characters;

/**
 * 
 */
public final class PlayVideo extends UiApplication
{    

    private Player player;
    private VideoControl videoControl;


    public static void main(String[] args)
    {
            PlayVideo theApp = new PlayVideo();
            theApp.enterEventDispatcher();
    }

    public PlayVideo()
    {
        MainScreen ms = new MainScreen(){

            public boolean onClose()
            {
                //Clean up the player resources.
                player.close();
                videoControl.setVisible(false);
                close();
                return true;
            }

            //Override keyChar to capture key commands used to control video playback.
            protected boolean keyChar(char c, int status, int time)
            {
                boolean retVal = false;

                if (c == Characters.SPACE)
                {
                    if (player.getState() == Player.STARTED)
                    {
                        //Stop playback.
                        try
                        {
                            player.stop();
                        }
                        catch (Exception ex)
                        {
                            System.out.println("Exception: " + ex.toString());
                        }
                    }
                    else
                    {
                        //Start playback.
                        try
                        {
                            player.start();
                        }
                        catch (Exception ex)
                        {
                            System.out.println("Exception: " + ex.toString());
                        }
                    }

                    retVal = true;
                }

                return retVal;
            }
        };

        ms.setTitle(new LabelField("Let's play some video..."));
        LabelField lf = new LabelField("Press space to start/stop/resume playback.");
        ms.add(lf);
        pushScreen(ms);

        try
        {
            //Create a new Player pointing to the video file.
            //This can use any valid URL.
            player = Manager.createPlayer("http://camera1.mairie-brest.fr/axis-cgi/mjpg/video.cgi");
            player.realize();

            //Create a new VideoControl.
            videoControl = (VideoControl)player.getControl("VideoControl");
            //Initialize the video mode using a Field.
            videoControl.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, "net.rim.device.api.ui.Field");

            //Set the video control to be visible.
            videoControl.setVisible(true);
        }
        catch (Exception ex)
        {
            System.out.println(ex.toString());
        }
    }
} 

1 Ответ

1 голос
/ 03 января 2011

Я также пытаюсь воспроизвести живое видео с IP-камеры на телефоне Blackberry и сталкиваюсь с той же проблемой.Manager.createPlayer (url) создает исключение MediaException, когда я даю URL liveview или ссылку на видеофайл, размещенный на удаленном сервере.Однако такого исключения не возникает, когда я пытаюсь воспроизвести видеофайл из памяти телефона.Вероятно, это связано с API проигрывателя.

Мой подход заключается в том, чтобы открыть InputStream из HttpConnection в URL-адрес liveview и непрерывно читать данные JPEG из InputStream.Это работало в телефонах Nokia, но не в Blackberry.Чтение данных из части InputStream не работает.Я разместил запрос на форуме разработчиков Blackberry, но пока не нашел удовлетворительного решения.

http://supportforums.blackberry.com/t5/Java-Development/How-to-read-a-continous-multipart-data-stream-over-network-in/m-p/656629

Рабочее решение, которое я реализовал, - это непрерывно захватывать снимки JPEG с камеры (вместо используемой ссылки MJPEG) и рисовать их на экране Blackberry.,Недостаток в том, что частота обновления очень низкая, потому что это включает в себя открытие и закрытие HttpConnection один за другим.

Надеюсь, мой ответ был полезен.Пожалуйста, пишите, когда сможете решить проблему.

Jithin

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...