Вывод HLS m3u8 TS сегмента PHP-FPM Nginx

Я читаю динамически генерируемый плейлист m3u8 hls из ffmpeg

в основном файл выглядит как

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:3
#EXTINF:11.000000,
2_3.ts
#EXTINF:8.000000,
2_4.ts
#EXTINF:11.000000,
2_5.ts
#EXTINF:11.000000,
2_6.ts
#EXTINF:8.000000,
2_7.ts
#EXTINF:11.000000,
2_8.ts

Я пытаюсь найти способ ограничить соединение одним соединением.
У меня есть таблица под названием Connection: она сохраняет идентификатор потока + идентификатор пользователя + Date_Start & date_end & статус

Когда пользователь начинает смотреть поток, он добавляет новые данные: пример

(StreamID : (2) , userID : (3) , Date_Start : Now() , Date_end : Null , status : ON )

как только он закрыл соединение, я хотел бы обновить date_end с Now () & статус ВЫКЛ

Окружающая среда:
Nginx, PHP-FPM & FFmpeg

я использую the register_shutdown_function( 'shutdown' ) написать последнее обновление

однако проблема заключается в том, что после воспроизведения списка воспроизведения выключение выполняется много раз, поскольку duo к m3u8 содержит 6 сегментов, каждые несколько секунд завершение работы выполняется много раз снова (обновляется список чанков), пока я еще не закрыл соединение.

Я ищу способ обработки списка воспроизведения как одного соединения, которое нужно сохранить, поэтому отключение функции будет выполняться ТОЛЬКО при прерывании соединения клиентом, а не при перезагрузке списка воспроизведения

С уважением

2

Решение

Даже если вы используете одно постоянное соединение, PHP-скрипт будет выполняться для каждого запроса списка воспроизведения, и, как вы заметили, зарегистрированная функция завершения будет вызываться в конце каждого запуска.

Вместо обновления Date_end немедленно регистрируйте запросы HTTP вместе с идентификаторами пользователя и потока и периодически вычисляйте статистику. Например. если плейлист не был перезагружен для T время посмотрим, это новый сеанс просмотра.

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

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

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]