Как рассчитать точное время продолжительности потоковой передачи в Интернете?

Я запускаю потоковую передачу на потоковом сервере wowza. Но я не могу найти точную продолжительность потоковой передачи.

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


person Community    schedule 16.09.2014    source источник
comment
Я не знаю сервер wowza, но на вашей странице есть аудиотег? если это так, вы можете получить доступ к нескольким данным об аудиофайле: продолжительность, текущее время, ecc и т.д.   -  person Omar Enrico Polo    schedule 16.09.2014
comment
@OmarEnricoPolo.. да, я получаю некоторые аудиотеги с API.. такие как - продолжительность потоковой передачи, ссылка на потоковую передачу. Но я хочу знать точную продолжительность песни, которую слушает пользователь.   -  person    schedule 16.09.2014
comment
Вы разрабатываете собственный модуль Wowza? Каков контекст? Возможно, взгляните на функцию wrench.disconnect.log.time.sql Wowza Wrench, которая позволяет вам выполнить SQL, а затем вы можете время, когда пользователь слушал музыку   -  person jabal    schedule 17.09.2014
comment
@jabal .. пользователь слушал музыку в собственном мобильном плеере. Итак, весь дескриптор переходит на сторону клиента. Я хочу знать точную продолжительность прослушивания аудио пользователем.   -  person    schedule 17.09.2014
comment
@RohitJindal Какой транспортный протокол вы используете для потоковой передачи, HTTP (например, HLS, HDS, Smooth, DASH) или RTMP? В случае HTTP будет сложно узнать точную продолжительность на стороне сервера; Я бы определенно реализовал решение на стороне клиента. Вы также можете задать вопрос на wowza.com/forums/forum.php.   -  person KBoek    schedule 17.09.2014
comment
@KBoek Я использую rtsp (протокол потоковой передачи в реальном времени) для потоковой передачи. когда пользователь слушает музыку на своем мобильном плеере, общий контроль переходит на сторону клиента. Итак, мы должны реализовать решение на стороне клиента. Пожалуйста, помогите мне.   -  person    schedule 17.09.2014
comment
@RohitJindal Что вы использовали для разработки этого мобильного нативного проигрывателя?   -  person KBoek    schedule 18.09.2014
comment
@KBoek Mobile Native player открывается автоматически, когда пользователь нажимает кнопку воспроизведения. мы просто отправляем URL-адрес потоковой передачи при нажатии кнопки воспроизведения.   -  person    schedule 18.09.2014
comment
@RohitJindal Понятно. В этом случае вам может понадобиться разработать собственное приложение с плеером и счетчиком; Я не думаю, что можно получить продолжительность воспроизведения из родного плеера через веб ...   -  person KBoek    schedule 18.09.2014
comment
@KBoek Итак, есть ли способ получить продолжительность воспроизведения от собственного проигрывателя через Интернет?   -  person    schedule 18.09.2014
comment
@RohitJindal Не то, чтобы я знал, поскольку Интернет и плеер - это два совершенно разных приложения. Но я не эксперт по iOS или Android, вам, вероятно, следует пометить свой вопрос по-другому (удалить теги PHP и JavaScript и добавить теги iOS/Android)   -  person KBoek    schedule 18.09.2014
comment
@KBoek Это не связано с (iOS / Android) ... это связано с Интернетом.   -  person    schedule 18.09.2014
comment
@RohitJindal Нет, это связано с мобильной ОС, так как вы используете родной мобильный плеер, а не веб-плеер.   -  person KBoek    schedule 18.09.2014
comment
@KBoek Я согласен с тобой. Bt я не могу найти точное решение проблемы. Если у вас есть контакты, пожалуйста, помогите мне или поделитесь этим сообщением в своем профиле.   -  person    schedule 18.09.2014
comment
@KBoek, ты нашел какое-нибудь решение?   -  person    schedule 26.09.2014


Ответы (3)


Как уже говорили другие в комментариях, невозможно определить точное время потоковой передачи.

Разные клиенты по-разному обрабатывают потоки. Рассмотрим случай, когда клиент браузера может предварительно буферизовать данные. Если пользователь переходит на страницу и браузер начинает скачивать аудиоданные, сервер будет думать, что клиент слушает поток, хотя на самом деле данные просто находятся в памяти. Когда пользователь начинает воспроизводить звук, скажем, через 1 минуту, сервер теперь считает, что он уже слушал в течение минуты. Когда пользователь переходит на новую страницу, соединение с сервером разрывается, звук останавливается одновременно с отключением.

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

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

person Brad    schedule 19.01.2015

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

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

Вы должны прослушивать события игрока, такие как воспроизведение, пауза, остановка, даже поиск. У большинства веб-плееров есть обратные вызовы для отслеживания этих событий. Затем соберите данные и отправьте их в свою базу данных для хранения.

person Sapnix    schedule 11.12.2018

Чтобы получить продолжительность потока, вам нужно разработать собственный модуль. Существует событие, называемое onMediaStreamDestroy, используя объект IMediaStream, вы можете получить продолжительность. открытый класс MyMediaStreamListener реализует IMediaStreamNotify { @Override public void onMediaStreamDestroy (поток IMediaStream) { stream.length(); // это используется для получения длины видео в секундах } }

person Manikandan Chandran    schedule 25.09.2014
comment
@Manikandan .. я не могу понять .. ты можешь объяснить больше? - person ; 25.09.2014
comment
@Manikandan Это не решение по многим причинам. Что наиболее важно, из-за характера потоковой передачи HTTP длина потока на стороне сервера может быть на 30-40 секунд меньше, чем на стороне клиента. - person KBoek; 27.09.2014
comment
@KBoek HTTP — это протокол без сохранения состояния, поэтому мы не можем отслеживать состояние пользователя, когда управление переходит на сторону клиента. - person ; 28.09.2014