Воспроизведение видео InputStream в Blackberry JDE
Я думаю, что я неправильно использую InputStream с симулятором Blackberry 9000:
Я нашел пример кода,
это позволяет воспроизводить видео из приложения Blackberry. В коде утверждается, что он может обрабатывать HTTP, но для того, чтобы действительно приблизиться к нему, потребовалось немало усилий:
В частности, я делаю:
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: Uncaught NullPointer Exception". (То есть приведение как StreamConnection, а затем как HttpConnection останавливает его падение).
Тем не менее, я все еще не потоковое видео. Раньше поток не мог быть создан (он падал с исключением нулевого указателя). Теперь создается поток, отладчик утверждает, что начинает потоковую передачу видео с него... и ничего не происходит. Нет видео играет.
Приложение не зависает, не падает или что-то еще. Я могу свободно "ставить на паузу" и "играть" и получать соответствующие отладочные сообщения для обоих. Но видео не появляется.
Если я играю видео, хранящееся локально на blackberry, все в порядке (на самом деле оно воспроизводит видео), поэтому я знаю, что сам проигрыватель работает нормально, мне просто интересно, может быть, у меня что-то не так с моим потоком?
API говорит, что игрок может взять InputStream. Есть ли конкретный вид, который ему нужен? Как я могу запросить свой входной поток, чтобы узнать, действителен ли он? Это существующее дальше, чем я получил раньше.
-Дженни
Изменить: я на симуляторе Blackberry Bold (9000). Я слышал, что некоторые версии телефонов НЕ транслируют видео через HTTP, однако, Bold делает. Я еще не видел примеры этого, хотя. Когда я захожу в Интернет и указываю на видео, которое можно воспроизвести на Blackberry, оно пытается выполнить потоковую передачу, а затем просит меня физически загрузить файл (а затем воспроизводится нормально после загрузки).
Изменить: Кроме того, у меня также есть физический Blackberry Bold, но он также не может транслироваться (я зашел на m.youtube.com только для того, чтобы получить сообщение об ошибке сервера / контента не найден). Есть ли что-то особенное, что мне нужно сделать для потоковой передачи контента RTSP?
3 ответа
Итак, спустя очень долгое время я решил, что Blackberry Bold 9000 НЕ выполняет потоковую передачу http. В итоге мне пришлось (или, скорее, коллеге по работе) написать собственные методы для прогрессивной загрузки, чтобы имитировать это. Ну что ж.
Вы должны быть в состоянии транслировать на самом деле. Во-первых, вы должны убедиться, что вы добавляете правильные параметры соединения в ваш URL (т. Е. "; Interface=wifi" для соединения wifi). Во-вторых, вы должны убедиться, что потоковый файл не слишком большой. Если он слишком велик, вы получите сообщение об ошибке "Файл слишком большой". Чтобы это исправить, вам нужно что-то буферизовать (см. API DataSource). Вы должны ограничить объем запроса до 1-2 МБ. После того, как вы извлекли этот "чанк", вы должны продолжать запрашивать последовательные чанки (с отдельными http-соединениями), чтобы продолжать заполнять ваш буфер. надеюсь, это поможет
Вы используете MDS в качестве шлюза? Если это так, вы получаете ошибку HTTP 413? Если это так, прочитайте эту статью: