Как приостановить и воспроизвести потоковый аудиоплеер J2ME с RTP

Вот как я пытаюсь воспроизвести аудиопоток с сервера через RTP.

try {  
     String url = "rtp://...";  
     Player p = Manager.createPlayer(url);
     p.realize(); 
     VideoControl video = (VideoControl) p.getControl("VideoControl");
     Item itm = (Item) video.initDisplayMode(VideoControl.USE_GUI_PRIMITIVE, null); 
     midlet.form.append(itm); 
     p.start();
} catch (Exception e) {...} 

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

Насколько я знаю, смартфоны не могут поддерживать сеанс с сервером, так как мобильный телефон не сохраняет сеансы и отправляет обратно на сервер каждый раз, когда запрос отправляется на сервер (а просто отправляет запрос и получает ответ, нет управления сессиями). Возможно я не прав.

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

2 ответа

При потоковой передаче все мультимедийные данные НЕ загружаются сразу, а некоторые части мультимедийных файлов загружаются по мере воспроизведения. Когда проигрыватель создается с помощью локатора rtp/rtsp, достаточно вызвать player.stop(), чтобы остановить воспроизведение и любую дальнейшую загрузку носителя. Аналогично, player.start() достаточно для возобновления воспроизведения с того места, где оно было остановлено.

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

Просто следуйте указаниям player.stop(),player.start(); достаточно функционировать

Другие вопросы по тегам