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

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

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

2 ответа

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

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

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

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

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

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

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

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

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