gpt4 book ai didi

php - 输出 HLS m3u8 TS 段 PHP-FPM Nginx

转载 作者:行者123 更新时间:2023-12-04 22:50:49 24 4
gpt4 key购买 nike

我正在阅读来自 ffmpeg 的动态生成的 m3u8 hls 播放列表

基本上文件看起来像

#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 的表:它保存 Stream ID + User ID + Date_Start & Date_end & status

一旦用户开始观看流,它就会添加新数据:示例
(StreamID : (2) , userID : (3) , Date_Start : Now() , Date_end : Null , status : ON )

一旦他关闭连接,我想用 Now() 和状态更新 date_end 到 OFF

环境:
Nginx , PHP-FPM & FFmpeg

我正在使用 the register_shutdown_function( 'shutdown' )写最后一次更新

然而问题是,一旦播放列表播放,由于 m3u8 包含 6 个段,关闭执行多次,每隔几秒,关闭再次执行多次(更新 block 列表),而我还没有关闭连接。

我正在寻找一种将播放列表作为要保留的连接来处理的方法,因此仅在客户端中止连接时才执行关闭功能,而不是在重新加载播放列表时执行

问候

最佳答案

即使您使用单个持久连接,PHP 脚本也会为每个播放列表请求执行,并且,就像您注意到注册的关闭函数将在每次运行结束时调用一样。

而不是更新Date_end立即记录 HTTP 请求以及用户和流 ID,并定期计算统计信息。例如。如果没有为 T 重新加载播放列表时间考虑这是一个新的 View session 。

另外,我不知道您如何跟踪用户 ID,但请记住,播放器软件不太可能保持 session ,并且信息不会跨请求保存。您可以在播放列表和分段 URL 中添加跟踪变量。

这仅适用于实时播放列表,因为对于 VOD,播放列表仅加载一次。

如果您可以使用基于 Web 的播放器,则有望通过一些回调在客户端跟踪用户。

关于php - 输出 HLS m3u8 TS 段 PHP-FPM Nginx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36462786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com