基于网络直播的网站在php中

时间:2012-07-10 04:20:55

标签: php html5 video-streaming video-capture

我有一个客户要求他想要一个能够通过搜索流式传输上传视频的网站。最苛刻的要求是他们每周都会举办某些活动,他们希望在相机上报道和录制这些活动,这些视频应该在网站上直播。

我知道如何在php中建立网站,但我不知道基于网络广播的网站需要什么,特别是相机和带宽要求。

Also what are the requirements and methods for a website which can stream videos uploaded on server.I am totally new to video streaming and don't know how to do it in php.

请解释我实施它的方法。

3 个答案:

答案 0 :(得分:1)

尝试HTML5网络摄像头捕获。

在Google IO期间突出显示。

我认为你需要谷歌的方法。我还没有真正使用它。

答案 1 :(得分:1)

作为Red5的替代品,可能更适合您尝试做的是Nginx-RTMP模块。 https://github.com/arut/nginx-rtmp-module如果您当前使用或可以使用Nginx,则该模块易于配置和使用。它可以通过RTMP接受实时视频并将其提供给基于Flash的播放器(如JWplayer),同时创建HTTP Live Streams以便在Apple设备(以及ROKU等其他设备)上播放。

我在几台服务器上安装了它,并对结果非常满意。它通过RTMP接受视频,只是做得很好恕我直言。

使用Nginx-RTMP,我使用运行ffmpeg的脚本来传输预先录制的文件" live"到服务器。然后,当我们真正想要一个真实的实时视频源时,只需使用运行ffmpeg的计算机(例如来自带有视频源的工作室)或者通过手机或平板电脑上的OSBroadcaster,停止ffmpeg并从我们的实时位置流式传输,或者真的可以通过RTMP流式传输视频的任何软件或应用程序。

您可以使用一些PHP后端自动执行所有这些操作,因此您的预先录制的素材会自动存储在服务器上(Nginx-RTMP也可以录制您的流)并在HTML5视频元素或flash中的正确页面上显示基于视频的播放器,或两者兼而有之。当实时馈送实际存在时,您可以让PHP在您的页面上显示一个显示实时流的播放器窗口。

当然,这是过度简化的,但希望你能感受到它是如何运作的。

有关Nginx-RTMP模块的更多信息,另请参阅How to set up your own private RTMP server using nginx

至于相机,它完全取决于情况,这是整个其他舞台的一种。您可以使用类似于通过RTMP流式传输的网络摄像头或平板电脑/智能手机,或专业摄像头,这些摄像头可以输入运行RTF客户端流媒体的计算机(如ffmpeg)(我认为VLC也适用)。或者Teradek和其他一些公司制作一些小硬件盒(Teradek Vidiu),您可以插入视频输入,他们将通过RTMP编码和流式传输视频到您指定的任何服务器。

带宽取决于很多因素:您将拥有多少观众,视频质量和分辨率,以及您需要支持多少同步流(来自不同位置的多个直播流等)

您的上传带宽(相机到您的流媒体服务器)的范围可以从100kbps左右到几Mbps,具体取决于您的视频要求。为了给你一个典型的例子,如果你以每秒24-30帧的速度传输标清视频,并使用像h.264这样的优秀编解码器,你可以期待一个体面的质量流占用大约400-700kbps。它可能会有很大的不同,但这是一个很好的起点。如果您要发送720p30,您可能需要使用大约1-1.5Mbps左右。 1080p30,可能是1.5-3Mbps,UHD,5-6Mbps。但就像我说的那样,你选择的比特率会因你的质量需求而有所不同。

然后您流出的内容是,您将该费率乘以您想要支持的观看者数量,为您的上传流添加一个,并获得所需的总带宽。还有其他事情要考虑,但你有自己的出发点。

答案 2 :(得分:0)

我做了很多研究,发现我们必须使用闪存类服务器。 为此,我们有两个选择:RED5和Flash。 RED5是开源的,而Flash不是免费的。 对于这种类型的网络广播,我们需要安装这样的服务器,然后使用适当的API并将Flash播放器嵌入到您的网页中。 这些特殊服务器是必需的,因为我们需要处理请求而不刷新页面,然后动态加载内容。