一天中的好时光, 我正在为编码人员替换Twitch,以便他们可以自由选择/创建他们想流的类别,并避免在“科学与技术”类别中使用Twitch成长“草”的人们。>
我从 nginx-rtmp-module 开始,并牢记此模块来构建我的前端,但是,在开发或测试阶段遇到的问题和局限性让我考虑换用另一种产品。
具体来说,没有一种简单(甚至可能)的方法向用户(将要观看该流的用户)隐藏私有流密钥,但这不是唯一的方法。
我已经尝试过Nimble Streamer,但是,他们免费使用该软件的“专有”方法,但是需要您使用他们的面板来管理流(已付费),并且坦率地说,直觉使我担心离开。
我已经尝试过Ant Media Server,但同样,大多数简单功能(例如身份验证)仅包含在软件的企业版中。
别误会我,我知道在“生产”阶段的后期,我将不得不考虑转向更面向“企业”的东西,但是,现在,我只是在寻找一种产品,该产品:
以及该媒体服务器应该能够做什么:
我已经测试过的内容:
如果有人知道某些支持至少2/3的媒体服务器,我将非常高兴听到它们。
谢谢您的时间。
更新
我有以下配置:
application live {
deny play all;
live on;
dash on;
on_publish http://app.local/api/stream/start;
on_publish_done http://app.local/api/stream/stop;
on_update http://app.local/api/stream/update;
dash_repetition on;
dash_fragment 5s;
dash_playlist_length 60s;
dash_cleanup on;
dash_nested on;
dash_clock_compensation http_head;
dash_clock_helper_uri http://live.local/time;
dash_path /tmp/dash/stream-dash;
}
问题是,由 / stats 页发布的流实际上是新的公钥,但是有关片段和清单的信息仍写在私钥的文件夹中。
为什么“统计信息”页面显示带有公共密钥的流,但数据仍被写入具有私有密钥名称的文件夹中?
P.S。这是用PHP编写的生成新公钥的逻辑
步骤12产生的密钥实际上是新的公共密钥,正如您所看到的,统计信息页面实际上返回了该确切密钥,但是,数据仍然使用从步骤3获得的密钥名称写入文件夹中。
更新#2。密钥生成算法的简化版本
/**
* Start stream
* @return Response
*/
public function start() : Response
{
$requiredStreamKey = 'live_1_B562zv8D6agoozRcXHiiYlvJ1EVVqkF7Q2GBYVE6XkqCsUCH';
$request = array_values(request()->only(['name', 'app']));
if (\count($request) < 2) {
return $this->sendError(Response::HTTP_BAD_REQUEST);
}
[$key, $app] = $request;
if ($requiredStreamKey !== $key) {
return response('', Response::HTTP_NOT_FOUND);
}
$exampleUUID = 'fcefd01c-f379-414c-95f8-c4e6e2b0ffc7';
$hash = hash('sha512', $exampleUUID);
return response('Generic Response', Response::HTTP_MOVED_PERMANENTLY)->withHeaders([
'Location' => sprintf('%s', $hash)
]);
}