使用websocket做视频直播

本文涉及的产品
视频直播,500GB 1个月
播放器SDK+直播LIVE组合试用套餐,播放器+流量+转码 1个月
播放器SDK+超低延时直播RTS组合试用套餐,播放器+流量+转码 1个月
简介: 使用websocket做视频直播

做的一个小项目需要用到相关技术,找到这篇文章貌似不错,于是就翻译转载上来了。

Recently I’m interesting in these technologies and I’m working on a project related to it. I’ve found this useful article so I translated and posted it here.


原文地址 / Original post:


HTML5 Live Video Streaming via WebSockets – PhobosLab


            笔者之前做一个实时监控应用的时候,曾搜索过一些将 iPhone 的摄像头拍摄的画面实时传输到浏览器的方案,一个都没有。


就 HTML5 来说,视频(实时)直播是一个很悲催的活,HTML5 视频目前还没有一个正式的流式传输支持,Safari 支持很蹩脚的 HTTP Live Streaming 并且也即将有 Media Source Extension 规范和 MPEG-DASH。但所有这些方案都是将视频分成小片,由浏览器单独下载,因此会产生最小五秒钟的延迟。


下面是一个完全不同的方案,可以支持所有现代浏览器:Firefox、Chrome、Safari、Mobile Safari、Android 版 Chrome 甚至是 IE10。


这套方案向后兼容,没有用到什么新奇技术,目前暂时不支持音频。但它出乎意料地好用。


来自摄像头的视频被 ffmpeg 编码,然后通过 HTTP 传递给一个 Node.js 写的小脚本;脚本会将这条 MPEG 视频流通过 WebSockets 分发给所有链接的浏览器;浏览器使用 JavaScript 解码 MPEG 视频流并将解码后的画面渲染到 Canvas 元素上。


你甚至可以用树莓派来传输视频。可能会有点慢,但是笔者测试过以 30fps 的帧率实时编码 320×240 视频不成问题。对笔者来说这是最好的树莓派视频方案。


下面是构建步骤。首先你需要取得最新版本的 ffmpeg,最新的安装包可以从 deb-multimedia 获得。如果你使用 Linux,你的摄像头应该在位于 /dev/video0 或 /dev/video1;在 OS X 或 Windows 上你可以用 VLC


确保用来分发视频流的服务器安装了 Node.js。下载 phoboslab/jsmpeg 项目的 stream-server.js 脚本。安装 WebSocket 包 ws 并启动服务器:

npm install ws
node stream-server.js 你的密码

这里的密码是用来确保不会有好奇宝宝来劫持你的视频流用的。如果服务器运行正常,你应该会看到这样的输出:

Listening for MPEG Stream on http://127.0.0.1:8082/<secret>/<width>/<height>
Awaiting WebSocket connections on ws://127.0.0.1:8084/

服务器启动后,你就可以启动 ffmpeg 并将它指向到正在运行的这个域名和端口了:

ffmpeg -s 640x480 -f video4linux2 -i /dev/video0 -f mpeg1video -b 800k -r 30 http://example.com:8082/你的密码/640/480/

这条命令会开始从摄像头捕捉 640×480 的视频,并编码成 30fps 码率 800kbps 的 MPEG 视频。编码后的视频会通过 HTTP 被发送到所指定的服务器和端口。确保密码正确,URL 中的长和宽也需要正确指定,否则服务器无法正确判断当前的分辨率。


在树莓派上你可能需要将分辨率降至 320×240 来确保编码速度仍能维持 30fps。


要观看直播,需要从前文提到的 jsmpeg 项目中下载 stream-example.html 和 jsmpg.js 文件,更改 stream-example.html 中的 WebSocket URL 为你的服务器地址,并使用你喜欢的浏览器打开。


如果一切正常,你就能看到少于 100ms 延迟的流畅的摄像头画面。很好很强大对不?


更便捷的方案请围观原文的 Instant Webcam。


只是备忘一下,近期会再发一篇博文来总结一下各个方案的实际使用效果。


重复一次原文地址 / Original post:

HTML5 Live Video Streaming via WebSockets – PhobosLab

目录
相关文章
|
视频直播
拥有视频直播源码之后就万事大吉了吗,大错特错!
从2016年直播行业逐渐的兴起,虽然爆发式的上升已经过去,但是整个行业仍然保持着稳步上升的发展趋势,所以关于视频直播源码的开发市场也是持续的火爆。很多小白可能以为手里有了直播源码就可以开工了,殊不知关于流媒体传输方面的知识也是需要有一个简单了解的。
拥有视频直播源码之后就万事大吉了吗,大错特错!
|
网络协议 视频直播 数据安全/隐私保护
视频直播源码开发中的流媒体协议:rtmp协议
视频直播源码的RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频、视频和互动内容)。RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流。通常情况下,不同类型的消息会被分配不同的优先级,当网络传输能力受限时,优先级用来控制消息在网络底层的排队顺序。
|
视频直播 前端开发
|
存储 编解码 弹性计算
阿里云视频直播服务介绍|学习笔记
快速学习阿里云视频直播服务介绍
阿里云视频直播服务介绍|学习笔记
|
视频直播 定位技术 UED
海外视频直播源码技术视频直播间的搭建
大家听到这里是不是感觉这个源码平台非常的熟悉,没错,这个源码平台就海外视频直播源码平台,而我说的这个房间就是视频直播间,主持人就是视频直播间内的主播,今天我就为大家分享海外视频直播源码技术视频直播间的搭建。
海外视频直播源码技术视频直播间的搭建
|
视频直播
【视频直播篇六】videojs的使用
本文着重介绍videojs的使用
272 0
|
视频直播
【视频直播篇七】Aliplayer的使用
本文着重介绍Aliplayer的使用
1184 0
|
9月前
|
编解码 安全 视频直播
为了在智能媒体服务中实现超低延时的直播效果,您需要购买和使用视频直播服务
【2月更文挑战第14天】为了在智能媒体服务中实现超低延时的直播效果,您需要购买和使用视频直播服务
90 3
|
算法 Unix 视频直播
【视频直播】推流以及播放地址的鉴权地址生成实践
针对阿里云的视频直播产品,生成推流以及播放域名的鉴权地址的流程实践方式
1323 0
【视频直播】推流以及播放地址的鉴权地址生成实践

热门文章

最新文章