Вопрос

Я думаю, что неправильно использую InputStream с симулятором Blackberry 9000:

Я нашел пример кода,

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/1089414/How_To_-_Play_video_within_a_BlackBerry_smartphone_application.html?nodeid=1383173&vernum=0

который позволяет воспроизводить видео из приложения Blackberry.В коде утверждается, что он может обрабатывать HTTP, но потребовались некоторые усилия, чтобы заставить его действительно приблизиться к этому:

http://pastie.org/609491

В частности, я делаю:

 StreamConnection s = null;
            s = (StreamConnection)Connector.open("http://10.252.9.15/eggs.3gp");
            HttpConnection c = (HttpConnection)s;                        
           InputStream i = c.openInputStream();
            System.out.println("~~~~~I have a connection?~~~~~~" + c);
            System.out.println("~~~~~I have a URL?~~~~" + c.getURL());
            System.out.println("~~~~~I have a type?~~~~" + c.getType());
            System.out.println("~~~~~I have a status?~~~~~~" + c.getResponseCode());

            System.out.println("~~~~~I have a stream?~~~~~~" + i);
             player = Manager.createPlayer(i, c.getType());

Я обнаружил, что это единственный способ получить InputStream из HTTPConnection, не вызывая:«Ошибка JUM 104:Неперехваченное исключение NullPointer».(То есть приведение в качестве StreamConnection, а ТОГДА в качестве HttpConnection предотвращает его сбой).

Однако я все еще не транслирую видео.Раньше поток невозможно было создать (он аварийно завершал работу из-за исключения нулевого указателя).Сейчас делается стрим, отладчик утверждает, что начинает с него стримить видео... и ничего не происходит.Видео не воспроизводится.

Приложение не зависает, не вылетает и ничего подобного.Я могу свободно «паузать» и «играть» и получать соответствующие отладочные сообщения для обоих.Но видео не появляется.

Если я воспроизвожу видео, хранящееся локально на Blackberry, все в порядке (он действительно воспроизводит видео), поэтому я знаю, что сам проигрыватель работает нормально, мне просто интересно, может быть, у меня что-то не так с моим потоком?

API сообщает, что игрок может принять входной поток.Нужен ли какой-то конкретный вид?Как я могу запросить свой входной поток, чтобы узнать, действителен ли он?Оно существует дальше, чем я получал раньше.

-Дженни

Редактировать:Я использую симулятор Blackberry Bold (9000).Я слышал, что некоторые версии телефонов НЕ передают потоковое видео через HTTP, однако Bold это делает.Хотя я еще не видел примеров этого.Когда я захожу в Интернет и указываю на воспроизводимое видео на Blackberry, оно пытается выполнить потоковую передачу, а затем просит меня физически загрузить файл (а затем воспроизводится нормально, как только я загружаю).

Редактировать:Кроме того, у меня есть физический Blackberry Bold, но он тоже не может осуществлять потоковую передачу (я зашел на m.youtube.com и получил ошибку «сервер/контент не найден»).Нужно ли мне что-то особенное сделать для потоковой передачи контента RTSP?

Это было полезно?

Решение

Итак, спустя очень долгое время я определил, что Blackberry Bold 9000 НЕ поддерживает потоковую передачу по http.В итоге мне пришлось (вернее, моему коллеге) написать собственные методы для прогрессивной загрузки, чтобы имитировать ее.Ну что ж.

Другие советы

На самом деле у вас должна быть возможность транслировать.Во-первых, вы должны убедиться, что добавляете правильные параметры подключения к своему URL-адресу (т.«;interface=wifi» для подключения к Wi-Fi).Во-вторых, вы должны убедиться, что файл, который вы транслируете, не слишком велик.Если он слишком велик, вы получите сообщение об ошибке HTTP «слишком большой файл».Чтобы это исправить, вам необходимо буферизовать данные (ознакомьтесь с API-интерфейсами DataSource).Вам следует ограничить запрашиваемый размер примерно 1-2 МБ.После того, как вы вытащили этот «кусок», вам нужно продолжать запрашивать последовательные фрагменты (с отдельными http-соединениями), чтобы продолжать заполнять буфер.надеюсь, это поможет

Используете ли вы MDS в качестве шлюза?Если да, то получаете ли вы ошибку HTTP 413?Если да, прочтите эту статью:

http://www.blackberry.com/knowledgecenterpublic/livelink.exe/fetch/2000/348583/800332/800431/How_To_-_Download_large_files_using_the_BlackBerry_Mobile_Data_System.html?nodeid=1371855&vernum=0

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top