RTSP клиент в Android - PullRequest
       68

RTSP клиент в Android

1 голос
/ 21 марта 2011

Возможно, задавался тот же вопрос, но я не нашел доступных для меня решений.

Я пытаюсь воспроизвести RTSP-поток в Android, а сервер является потоковым сервером Дарвина.Пока я пробовал VideoView и MediaPlayer, которые всегда работают нормально, когда я использую 3G, но у меня возникают проблемы, когда я иногда использую Wifi, особенно когда я использую Wifi на своем рабочем месте, и ошибка в LogCat:

PlayerDriver( 31): buffering (0)

Я гуглил и догадываюсь, что причина может быть в том, что точка доступа Wifi находится за брандмауэром, а порт UDP заблокирован, а среда мультимедиа Opencore поддерживает только RTP через UDP.Поправьте меня, если я ошибаюсь.

Тогда вот мой вопрос, как я могу решить его, если я не могу изменить ситуацию с брандмауэром.Если использование встроенного VideoView / MediaPlayer невозможно, то как написать свой собственный клиент RTSP.

Любые предложения будут оценены:)

Заранее спасибо!

Болтон

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Не думаю, что с этим можно многое сделать ... Вот моя идея:

Создайте приложение, которое будет запускаться в той же локальной сети, что и Darvin, затем оно получит RTP-поток Дарвина, который проходит по UDP (в локальной сети), а затем передаст его по TCP в WAN, чтобы вы могли получить к нему доступ. Вы можете легко написать это приложение на C # ... и оно будет отлично работать. Или, если у вас есть дистрибутив Linux, вы можете написать сложный скрипт Bash, который будет использовать NC для того же ...

Так что это в основном идея: enter image description here

0 голосов
/ 20 марта 2013

Это довольно простая и интересная задача в Android.

Просто следуйте инструкциям.

1- Установите VLC на свой компьютер (SERVER) и перейдите в Media-> Streaming (Ctrl + S).) 2 - выберите файл для потоковой передачи или, если вы хотите транслировать вашу веб-камеру или ... нажмите на вкладку «Захват устройства» и выполните настройку и, наконец, нажмите кнопку «Стрим».3 - здесь вы должны выполнить настройку сервера потоковой передачи, просто перейдите на вкладку «Option» и введите следующую команду:

: sout = # transcode {vcodec = mp4v, vb = 400, fps = 10, width =176, высота = 144, acodec = mp4a, ab = 32, каналы = 1, частота дискретизации = 22050}: rtp {sdp = rtsp: // YOURCOMPUTER_SERVER_IP_ADDR: 5544 /}

ПРИМЕЧАНИЕ. Замените YOURCOMPUTER_SERVER_IP_ADDR на IP вашего компьютераадрес или любой сервер, на котором работает VLC ...

ПРИМЕЧАНИЕ. Вы можете видеть, что видеокодек - это MP4V, поддерживаемый Android.

4 - перейдите к затмению и создайте новый проект.для медиа плейбак.создайте объект VideoView и в функции OnCreate () напишите такой код:

mVideoView = (VideoView) findViewById(R.id.surface_view);

mVideoView.setVideoPath("rtsp://YOURCOMPUTER_SERVER_IP_ADDR:5544/");
mVideoView.setMediaController(new MediaController(this));

5 - запустите apk на устройстве (не симуляторе, я его не проверял) и дождитесь воспроизведения, чтобыначать.пожалуйста, учтите, что процесс буферизации займет около 10 секунд ...

0 голосов
/ 21 марта 2011

Использование MediaPlayer - рекомендуемый путь с RTSP.но, как вы сказали, что проблема сохраняется с брандмауэром WiFi, в таком случае вы должны включить порты или настроить необходимые.Я думаю, что для этого нет решения, так как проблема с сетью, а не с вашим кодом.Так что мяч не на вашей площадке.

...