我正在制作一个实时流媒体原型,我一直在阅读很多关于实时流媒体如何工作和许多不同的方法,但我仍然找不到适合我需要的实时流媒体堆栈......
这些是我原型的要求:
1)视频/音频录制必须来自使用网络摄像头的网络浏览器,其想法是客户端最好不需要安装插件或做任何复杂的事情(也许安装Flash播放器插件是可以接受的,仅用于录制视频,观众应该能够在没有插件的情况下查看流)。
2)它不能是对等的,因为我还需要将整个视频存储在我的服务器中(例如在亚马逊s3服务器中)以供稍后查看。
3)观众也应该能够通过他们的网络浏览器(例如Chrome和Firefox)观看流而无需安装任何内容。如果可能,我们希望使用HTML5视频标记。
4)原型的构建不需要花钱。我已经看到AWS-Cloudfront和Wowza提供免费试用,因此我们正在考虑使用这两项服务。
5)原型应该能够一次维持1个直播流和2个观众,所以对此没有任何限制。
有什么建议?
我特别被困在/混淆了架构的上传/编码视频部分(我是流媒体新手,所有的格式/编解码器/协议/技术都让它很难消化)。
截至目前,我遇到了WebRTC,它显然允许我做我想要的,使用网络摄像头从浏览器录制和编码视频,但此API仅适用于HTTPS站点。有没有可以与HTTP站点一起使用的替代方案?
我不完全确定的另一部分是需要编码服务器,例如Wowza Streaming Engine,为什么我需要它?如果我使用例如WebRTC对视频进行编码,然后我将其发送到分发服务(例如AWS-Cloudfront),这还不够吗?我确实理解编码服务器将允许我支持许多不同的设备,因为它将创建许多不同的编码并提供许多不同的HTTP协议,但我是否需要它用于此原型?我只想制作1格式(例如MP4)直播,可以在2个网络浏览器中观看,这就是全部,我不需要各种格式,也不支持不同的带宽或设备。
根据您的要求,WebRTC是一个好方法。
API仅适用于HTTPS站点。有没有可以与HTTP站点一起使用的替代方案?
不。目前Firefox只是浏览器允许HTTP上的WebRTC,但最后它需要HTTPS
要做这个原型,你需要使用Wowza WebRTC。
在使用wowza时,所有流都只从wowza传递出来。所以它变成了一个路由的WebRTC。
安装Wowza - https://www.wowza.com/docs/how-to-install-and-configure-wowza-streaming-engine
启用WebRTC - https://www.wowza.com/docs/how-to-use-webrtc-with-wowza-streaming-engine
下载并配置Streamlock。或自签名JKS文件 - qazxsw poi
下载示例WebRTC - https://www.wowza.com/docs/how-to-request-an-ssl-certificate-from-a-certificate-authority
使用发布HTML发布流并通过播放HTML播放(支持的Chrome,Firefox和Opera浏览器)
对于WebRTC中的MP4文件:您需要使用h264和aac启用转码器。此外,您还需要在为WebRTC(而非DVR)创建的应用程序属性中启用选项“记录所有传入的流”。使用文件编写器模块将所有录制的文件保存在自定义位置。使用自定义脚本(Bash,Python)将所有转码文件移动到s3存储桶,通过cloudfront传送。