一天中的好时光,
我为我正在提供的实时流服务选择了 nginx-rtmp-module ,但是,我现在面临的问题是我无法隐藏由以下人员发布的私钥:给用户的应用程序,或者如果我能做到的话,流每9秒左右就不断冻结。
我采取的方法:
1。事件发生后,在 on_publish 事件之后将流从实时中继到实时破折号应用已被触发。在此期间,将生成新的公共流密钥,然后隐藏私钥,并且用户可以通过访问新的公共密钥来查看流-但是,在这种情况下,流每9秒冻结一次
2。下面再次发布的解决方案-但是,统计信息页面显示的是生成的公共密钥的流密钥,但是流的文件已保存到私钥文件夹中,清单包含与流相关的私钥信息
我已经花了大约10天左右的时间解决这个问题,在github上的不同分支上问了很多问题,但是,似乎没人知道解决此问题的方法(即使人们试图解决)。
从我的角度来看,此模块在创建目录时不考虑从 on_publish 回调返回的新密钥,但实际上使用它来发布有关流的信息
我有以下配置:
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获得的密钥中。