如何使用HTML5进行直播,而不需要使用Flash?

12
问题: 我需要让我的客户能够将他们的网络摄像头流式传输到我的流媒体服务器(例如Wowza服务器)。我正在使用PHP构建我的站点。 我已经浏览了各种流媒体网站,如twitch.tv、livestream.com等,发现它们都使用第三方广播软件,如Wirecast、XSplit broadcaster、OBS等来将Webcam feeds流式传输到服务器。 然后我发现了一些使用WebRTC进行视频聊天的网站,例如vLineOpentokrtc

我的问题: 所以,我的问题是,是否可能仅使用WebRTC而不使用广播软件将流发送到广播服务器(以便它们可以广播我的实时流)? 如果是,则如何操作? 如果不是,则有哪些其他选择?

PS. 我不想在这里使用Flash、ActionScript。


这是完全可能的,但您可能需要修改广播服务器。有很多WebRTC MCU服务器可供使用作为WebRTC广播服务器(广播者对服务器进行点对点连接,然后听众对该特定源进行点对点连接)。 - Benjamin Trent
你可以尝试使用Kurento媒体服务器,演示文档 演示代码 - mido
4个回答

2
您需要一个集成了伪WebRTC客户端的服务器。WebRTC可以获取流,但在建立PeerConnection之前无法开始流式传输。您可以尝试使用各种服务器/网关,例如JanusKurentoLicodeFreeSwitch等。
此外,WebRTC生成的MediaStream可以直接附加到HTML5的<video>标签上。

你知道如何从MediaStream对象中获取视频/音频的实际比特流吗?然后我可以尝试将该比特流发送到服务器,这只是一个想法。 - Parthapratim Neog
@ParthapratimNeog 我认为浏览器客户端无法直接访问流内容。也许可以采用类似这个的方法。然后将图像发送到服务器并在查看客户端的画布标签上呈现。但是请注意,在这种情况下,延迟会相当大。 - Obscure Geek

2
使用WebRTC来实现这样的用例会在服务器端产生高计算成本,而且这是一种相当新的技术,这意味着你应该只在确信自己知道在做什么时才使用它。
我的建议是使用Flash或MPEG-DASH代替-除非你需要具有非常低的延迟,并且愿意通过较小的解决方案规模来支付它的费用。

1
高计算成本的原因是什么?一个体面的MCU只需要担心重新标记控制数据包,然后重新加密RTP。成本真的比Flash高那么多吗?(请注意,我对Flash没有经验/知识,只是好奇它为什么具有更低的成本) - Benjamin Trent
1
Flash不是要在几年内被弃用吗?因此,我不想学习ActionScript,因为当Flash完全被弃用时,这将是一种完全的浪费。尽管如此,我已经在进行一些关于Kurento和@Benjamin以及Obscure Geek建议的其他服务器的研究。对于像我这样的初学者来说,很难找到一些好的WebRTC学习材料。 - Parthapratim Neog
Flash正在逐渐退出历史舞台,这只是时间问题。在流媒体方面,它的主要替代品是MPEG-DASH和iOS HLS。WebRTC虽然可以用于流媒体,但它并不是专为流媒体设计的。它的双向性和网络自适应性使其不适合作为流媒体活动的标准解决方案。 - Tsahi Levent-Levi

1
除非我误解了,我认为你想要将视频流传输到服务器上(用于使用“正常”直播流机制进行分发),而不是使用WebRTC从服务器流式传输视频。
如果是这样,WebRTC将起作用,但是您需要实现一组相当完整的WebRTC协议的服务器端实现,包括视频解码。这些已经存在,但当然不是直接在PHP中实现的。这将处理从客户端获取实时音频和视频,而无需在客户端上安装插件,包括带宽适应和错误纠正。
一旦数据在服务器上解码,您就有了一个可以提供给直播编码器进行流输出的视频+音频数据流。

1
Wowza支持你在WebRTC场景中成为另一个对等端所需的功能。从那里,你可以按照媒体服务器通常的方式重新分发流。这个功能仍处于“预览”模式,并且有一些限制,但对大多数情况都是有效的。你可以通过https://www.wowza.com/products/capabilities/webrtc-streaming-software请求访问该功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接