Длина потокового мультимедиа

Я хочу воспроизвести медиафайл (mp3) с URL-адреса. а также я хочу получить длину этого mp3-файла. Мне удалось воспроизвести файл, но я также хочу отобразить SeekBar. Для этого мне нужно знать длину медиафайла в секундах.

Как я могу этого добиться?

Я нашел один способ, но, используя его, я не думаю, что это дало мне длину в секундах.

 URLConnection cn = new URL(mediaUrl).openConnection();
 cn.connect();
 int length =  cn.getContentLength();

Я думаю, что он возвращает байты. Итак, могу ли я преобразовать его в секунды? Или кто-нибудь знает другой способ?


person Chirag Patel    schedule 12.04.2012    source источник
comment
Попробуйте так же, как здесь это сделано для видео.   -  person Lalit Poptani    schedule 12.04.2012
comment
@LalitPoptani спасибо за ваш ответ, но я не думаю, что видео воспроизводится с URL-адреса. поэтому, когда я пытаюсь использовать метод getDuration(), он дает мне продолжительность буферизации, но когда он полностью буферизуется, его значение изменяется. например, сначала 400 567 1234, и, наконец, 4000. Так что моя панель поиска колеблется ... Надеюсь, вы понимаете.   -  person Chirag Patel    schedule 12.04.2012


Ответы (3)


Проверьте метод getHeaderFields(), а затем проверьте, есть ли заголовок ответа, содержащий длину. Если нет, вы можете получить контент, прочитать метаданные mp3 из потока и выяснить скорость передачи кбит/с. Получив это, вы можете получить длину во времени, используя длину в байтах.

person Shubhayu    schedule 12.04.2012

Размещенный вами код — это то, что необходимо для извлечения любых данных из URL-адреса.

На самом деле вы можете извлекать файл MP3 из этого url, но getContentLength(), который вы вызываете, воздействует на объект URLConnection — он возвращает размер файла, который вы загружаете (байты, килобайты, мегабайты). ).

Если вы хотите проверить время воспроизведения MP3, вам придется преобразовать данные в действительный медиа-объект, который затем должен иметь свои собственные методы доступа, такие как getDuration().

person Graeme    schedule 12.04.2012

Как только ваша потоковая передача мультимедиа началась, вы можете использовать mediaplayer.getDuration, чтобы получить общую продолжительность медиафайла. затем это значение можно использовать в runnable для регулярного обновления панели поиска.

person Anurag Ramdasan    schedule 12.04.2012
comment
mediaplayer.getDuration возвращает мне только то, сколько буферизовано, а не общую продолжительность .... :( - person Chirag Patel; 13.04.2012