Потоковая передача HTTP с проигрывателя VLC на AVD с помощью Android VideoView

Я пытаюсь транслировать видео 3gp на эмуляторе Android (v. 2.3.3 - Eclipse IDE). Я готовлю поток с медиаплеером VLC, используя HTTP на порт 9090 без какого-либо перекодирования. Для тестирования потоковой передачи я открываю новый экземпляр VLC и подключаюсь к своему локальному IP (192.168.1.107:9090) и вижу видео без проблем. Теперь я пробую использовать этот код на Android в методе onCreate (Bundle) моего класса Activity:

VideoView video = (VideoView) findViewById(R.id.video);
String uri = "http://192.168.1.107:9090";
video.setVideoURI(Uri.parse(uri));
video.setMediaController(new MediaController(this));
video.requestFocus();
video.start();

но при запуске приложения появляется такое сообщение: «Невозможно воспроизвести видео». Здесь логарифм:

D/MediaPlayer(454): Couldn't open file on client side, trying server side
E/MediaPlayer(454): error (1, -2147483648)
E/MediaPlayer(454): Error (1,-2147483648)
D/VideoView(454): Error: 1,-2147483648

Я пробовал также с URI 10.0.2.2:9090 с тем же результатом и 127.0.0.1:9090 с тем же сообщением и диапазоном ошибок (1, -111)

Обратите внимание, что это же видео отлично работает, если я воспроизвожу его на локальном компьютере:

String uri = "android.resource://" + getPackageName() + "/" + R.raw.myvideo;

Я использую Windows 7 x64.

Изменить: я также пытался загрузить видео в общую папку моего Dropbox с той же ошибкой, но используя исходный ссылка работает! Есть проблема с моей локальной сетью? Что означает ошибка (1, x)?

Edit2: я начал сеанс XAMPP в своей локальной сети и поместил видео в папку. IP-адрес выглядит примерно так:

String uri = "http://192.168.1.107:8080/myfolder/myvideo.3gp";

и он работает, даже если это не потоковая передача, а что-то вроде активной загрузки (как пример в Интернете в моем первом редактировании).


person Baduel    schedule 27.10.2011    source источник
comment
Работает ли поток, если вы открываете URL-адрес в настольном браузере? Как насчет браузера Android?   -  person Peter Knego    schedule 27.10.2011
comment
@PeterKnego Google Chrome загрузит файл с именем download без какого-либо расширения. Браузер Android также загружает файл, но в папке загрузки я не прочитал под своим ip и ‹Unknown›.   -  person Baduel    schedule 27.10.2011
comment
Я бы посоветовал попробовать использовать более конкретный URL-адрес 192.168.1.107:9090/myfile.3gp вместо голый домен: порт. также попробуйте протестировать его на реальном устройстве.   -  person yorkw    schedule 28.10.2011
comment
@yorkw Я пробовал, но ошибка такая же с другим диапазоном (1, -1004). К сожалению, у меня нет Android-устройства.   -  person Baduel    schedule 28.10.2011
comment
Android также должен иметь возможность просматривать потоки rtsp: и, хотя я смог открыть некоторые тестовые потоки в Интернете со своего телефона HTC Desire, мне не удалось настроить VLC для потоковой передачи rtsp, который поддерживает медиаплеер Android (играет нормально в VLC, хотя при подключении к потоку rtsp он создает).   -  person Johncl    schedule 01.12.2011
comment
@Johncl Я использовал сервер потоковой передачи Darwin для потоковой передачи видео в RTSP и открытия его с помощью AVD. Поскольку для этого решения требуется Mac OS, я не публиковал ответ на свой вопрос.   -  person Baduel    schedule 01.12.2011


Ответы (1)


Вы проверили, что ваш локальный веб-сервер доставляет видео с правильным Content-Type (или типом mime), установленным в заголовке ответа HTTP?

В вашей исходной ссылке используется Content-Type: video/3gpp

Для VLC вы можете указать контент или тип пантомимы на странице параметров. Согласно документации, вы должны отредактировать строку параметра и добавить

:mime=video/3gpp
person Robert    schedule 28.10.2011
comment
Я не знаю, каким образом VLC отправляет поток по HTTP. Я просто использую что-то вроде this для потоковой передачи видео. - person Baduel; 28.10.2011
comment
Извините, но я не понимаю, где я должен указать тип пантомимы. - person Baduel; 28.10.2011
comment
Откройте ссылку, которую вы разместили в своем первом комментарии, и прокрутите вниз до раздела «Параметры». Здесь вы можете увидеть сгенерированную строку вывода Stream, которую необходимо изменить. - person Robert; 28.10.2011
comment
Хорошо, я изменил строку, которая таким образом стала: :sout=#duplicate{dst=http{mux=ffmpeg{mux=flv},dst=:9090/},dst=display} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep:mime=video/3gp, но показанная ошибка осталась прежней. - person Baduel; 28.10.2011