使用websocket做视频直播

本文涉及的产品
视频直播,500GB 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

目录
相关文章
|
4月前
|
编解码 安全 视频直播
为了在智能媒体服务中实现超低延时的直播效果,您需要购买和使用视频直播服务
【2月更文挑战第14天】为了在智能媒体服务中实现超低延时的直播效果,您需要购买和使用视频直播服务
54 3
|
视频直播 定位技术 UED
海外视频直播源码技术视频直播间的搭建
大家听到这里是不是感觉这个源码平台非常的熟悉,没错,这个源码平台就海外视频直播源码平台,而我说的这个房间就是视频直播间,主持人就是视频直播间内的主播,今天我就为大家分享海外视频直播源码技术视频直播间的搭建。
海外视频直播源码技术视频直播间的搭建
|
存储 编解码 弹性计算
阿里云视频直播服务介绍|学习笔记
快速学习阿里云视频直播服务介绍
阿里云视频直播服务介绍|学习笔记
|
JavaScript 视频直播 5G
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
由于5g网络的光速推广,视频业务又被推上了风口浪尖,在2019年初我们还在谈论照片,短视频等关键字,而进入2020年,我们津津乐道的就只有视频,视频,还是视频,普通人拿起手机做直播早已不是奢望。
基于阿里云直播实现视频推流(ffmpeg)/拉流(Django2.0)以及在线视频直播播放(支持http/https)功能
|
弹性计算 移动开发 Ubuntu
阿里云上搭建HLS直播服务器
通过将摄像头的rtmp视频流推送到服务器,转换成HLS(HTTP Live Streaming)格式,用户可以通过H5浏览器直接打开直播视频。
766 0
|
存储 编解码 人工智能
产品百科 |直播转点播最佳实践
直播转点播(直转点)是将直播流同步录制为点播视频,并支持媒资管理、媒体处理(转码及内容审核 / 智能首图等 AI 处理)、内容制作(云剪辑)、CDN 分发加速等一系列操作,可配置工作流自动处理,也可通过 API/SDK 灵活触发。
产品百科 |直播转点播最佳实践
|
视频直播
拥有视频直播源码之后就万事大吉了吗,大错特错!
从2016年直播行业逐渐的兴起,虽然爆发式的上升已经过去,但是整个行业仍然保持着稳步上升的发展趋势,所以关于视频直播源码的开发市场也是持续的火爆。很多小白可能以为手里有了直播源码就可以开工了,殊不知关于流媒体传输方面的知识也是需要有一个简单了解的。
拥有视频直播源码之后就万事大吉了吗,大错特错!
|
域名解析 编解码 视频直播
视频直播源码实现直播技术曾遇到的那些小问题
文章主要内容:在直播过程经常会遇到哪些问题?视频直播源码是怎样实现相应的直播技术的?这些问题的产生是由怎样的原因导致的?
视频直播源码实现直播技术曾遇到的那些小问题
|
视频直播 Windows Go
直播APP源码,视频直播技术篇 。
直播行业现在是越发的火热,人们对于视频直播的热情也是久盛不衰,云豹直播的技术人员在这里就教大家编写一个小小的视频直播片段。Windows Media Player 系列(不同面板样式) 综合型:id=MediaPlayer type=application/x-oleobject width=21...
3236 0
|
网络协议 视频直播 数据安全/隐私保护
视频直播源码开发中的流媒体协议:rtmp协议
视频直播源码的RTMP协议从属于应用层,被设计用来在适合的传输协议(如TCP)上复用和打包多媒体传输流(如音频、视频和互动内容)。RTMP提供了一套全双工的可靠的多路复用消息服务,类似于TCP协议[RFC0793],用来在一对结点之间并行传输带时间戳的音频流,视频流,数据流。通常情况下,不同类型的消息会被分配不同的优先级,当网络传输能力受限时,优先级用来控制消息在网络底层的排队顺序。