Android: как использовать VLC, не выходя из текущей активности? (для фонового звука)

Предположительно: VLC для Android установлен на устройстве и работает нормально.

На самом деле я могу запустить VLC с моим URL-адресом и прослушать аудиопоток с возможностями реального времени (‹ 1 сек) с помощью этого:

 private void startRTSPStreamOnVLC(String ip, String port, String path) {
    final String url = "rtsp://" + ip + ":" + port + "/" + path;

    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setPackage("org.videolan.vlc");
    i.setDataAndType(Uri.parse(url), "video/h264");
    i.setComponent(new ComponentName("org.videolan.vlc", "org.videolan.vlc.gui.video.VideoPlayerActivity"));
    startActivity(i);
}

Проблема в том, что он выводит VLC на экран, вызывая паузу/остановку моего приложения и прерывая мой другой аудиопоток.

Было бы еще лучше, если бы я мог открыть VLC в представлении, которое я мог бы показать в своем макете.

Я знаю, что Службы можно использовать как Активность без графического интерфейса, но это подразумевает изменение самого VLC, чего я действительно хочу избежать.

Какой-нибудь секретный совет для достижения этого?

-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-'-

РЕДАКТИРОВАТЬ / Ответ: Как сказал Викаш Кумар Верма, использование LibVLC было правильным решением. Мне пришлось скомпилировать его для моего ABI (mips), следуя этому руководству. Самый последний пример приложения Я нашел этот.

Удалось снизить задержку до 550 мс моего аудиопотока RTSP, работающего в Windows 7 с VLC в качестве сервера. Мне пришлось пойти в класс Media и изменить строку 771 следующим образом:

 addOption(":network-caching=0"); // Was 1500

person J.Jacobs-VP    schedule 07.10.2016    source источник
comment
StartActivity всегда будет показывать новую активность. Единственный способ сказать VLC, чтобы воспроизвести какой-то звук, - отправить на него трансляцию. Но я не знаю, что Intent должно быть внутри - можете погуглить.   -  person Ircover    schedule 07.10.2016


Ответы (1)


Да, вы можете использовать VLC в своем макете. Взгляните на MyVlcPlayer. Я использую библиотеку libVLC для воспроизведения видео в своем приложении.

person Vikash Kumar Verma    schedule 08.10.2016
comment
Спасибо, это было действительно правильное направление. Тем не менее, в вашем проекте используется LibVlc, устаревший на 3 года, я отредактирую свой пост, чтобы больше объяснить, что я нашел. - person J.Jacobs-VP; 14.10.2016
comment
хе-хе :) @J.Jacobs-VP Надеюсь, однажды я найду время, чтобы обновить LibVlc до новой версии. - person Vikash Kumar Verma; 14.10.2016