php - 具有1个允许的连接和PHP的HTTP实时流

标签 php http-live-streaming

我正在尝试制作一个小系统,它将提供hls播放列表(m3u8),其中将包含一些片段。
这些段将从php加载和发送。例如,段将如下所示:

segment.php?stream=1&username=X&password=X&file=01.ts
segment.php?stream=1&username=X&password=X&file=02.ts

现在,我已经制作了这个系统并且运行良好,但是在限制连接方面我确实有很多问题。一般来说,我想限制一个客户机(uname/pass),这样他一次只能打开一个流。
假设我们有两个流,格式如下
1.m3u8
2.m3u8

我这样调用它们(将php url重写为php文件):
http://site/1.m3u8?username=X&password=X
http://site/2.m3u8?username=X&password=X

每一个都有我在上面解释过的部分。
如何限制每个客户机,使他一次只能打开一个连接,但同时让他切换到第二个通道(关闭第一个通道),而没有任何问题?
我花了好几天的时间来解决这个问题,但总是有些事情不好用。
我不需要你提供代码,只要一些想法或计划,可能会帮助我。
另外,如果重要的话,我正在使用nginx。

最佳答案

考虑到你提供的信息,很难确定你到底想达到什么样的目标,但这里有一个想法。
使用你的数据库。你至少需要两张桌子。
用户表(如果有用户,可能已经有了此表)
流表
在stream表中,存储每个流及其路径、状态和用户id

+----+---------+----------------+--------+
| id | user_id |  stream_path   | status |
+----+---------+----------------+--------+
| 1  |    1    | path/to/stream |    0   |
+--------------+----------------+--------+
| 2  |    1    | path/to/stream |    1   |
+----|---------+----------------+--------+

当用户打开第一个流时,将其状态设置为活动(1),将第二个流设置为非活动(0),当用户打开第二个流时,将此流状态设置为活动(1),将上一个流设置为非活动(0)。
在客户端,检查他们正在使用的流是否处于活动状态,如果流处于非活动状态,则销毁该流。
另外,出于安全原因,您不想将用户信息与流一起传递,在这种方法中,您不必传递。数据库将对用户进行身份验证,从中您可以查询他们有权访问的流及其状态。如果您需要对查询进行更多的动态处理,您可以在多个表(如streams表、user_streams、stream_status等)中分解这些值,但如果没有,则一个表可以处理这些数据流。
如果你想提供更多的细节,你的确切情况是什么,我很乐意更新我的答案。

关于php - 具有1个允许的连接和PHP的HTTP实时流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36190636/

相关文章:

codenameone - com.codename1.components.MediaPlayer 是否支持 HLS 自适应比特率流

php - 如何动态加载已解析为 PHP 的 Javascript?

php - 使用 jquery post 更新 .json 文件到 php 文件

http-live-streaming - .m3u8 播放列表文件可以引用其他 .m3u8 播放列表文件吗?

ios - AVPlayer 抛出 : "Internal error: restarting too far ahead"

objective-c - HTTP 直播 Mac 应用程序

node.js - 使用 Node js 进行 MP3 文件直播

php - strtolower 因阿拉伯字符而失败

php - $_POST方法请求限制

PHP 网络服务 SOAPClient 错误