斗鱼直播是用的啥技术,如何实现一个网页直播间

2016-01-12 12:51:08 +08:00
 Lcys
RT.能共享屏幕就行...
21490 次点击
所在节点    程序员
19 条回复
zhujinliang
2016-01-12 13:05:15 +08:00
播放基于 http 流, flv 容器。推送基于 rtmp

整个系统有三个角色,转发服务器,流推送端,客户端
服务器可用 nginx_rtmp ,推送端请看斗鱼或 b 站直播教程,客户端网页的话要写 flash 或者做 HLS

根据客户数量规模,服务器可能需要做 CDN 或码率转换
Lcys
2016-01-12 13:07:24 +08:00
带宽要求是啥 20M 带宽能支持 10 人在线吗?
@zhujinliang
br00k
2016-01-12 13:09:22 +08:00
@Lcys 需要上行带宽。看你码率决定是否足够。
zhujinliang
2016-01-12 13:11:03 +08:00
@Lcys 基本够用
大部分直播码率在 1000kbps 左右
wbsdty331
2016-01-12 13:17:01 +08:00
@zhujinliang 推流以 obs 和 xsplit 为主,斗鱼自己也有个直播助手
SPACELAN
2016-01-12 13:22:02 +08:00
实现一个网页直播间的花还可以用 webrtc
sgissb1
2016-01-12 13:29:29 +08:00
@SPACELAN webrtc 其实很不好用,再等几年吧
youyaochi
2016-01-12 13:41:30 +08:00
xing393939
2016-01-12 13:42:21 +08:00
ne6rd
2016-01-12 16:13:47 +08:00
正好借地问一下,有没有通过网络给直播录像的方法,具体是什么思路呢
zhujinliang
2016-01-12 17:25:46 +08:00
@ne6rd 意思是直接录直播流么?
斗鱼是对地址做过处理的, flash 上有生成校验码的逻辑,自己没办法构造正确的下载地址(除非反编译 flash )
有了地址后,可以直接用 ffmpeg 下载,把地址做为输入参数即可,顺便还能直接转格式

再有就是需要自己处理连接断了后重连的逻辑,需要修正 flv 文件里的时间码
XhstormR
2016-01-12 17:50:12 +08:00
@zhujinliang youtube-dl 支持 douyu
wupher
2016-01-12 22:46:10 +08:00
之前有做过直播。使用 RTMP 协议,通过各种输入端( PC Camera 、 Mobile )获得音视频流,按照 H264, AAC 或者 MP3 进行压缩,然后按 RTMP 传输入视频服务器。 视频服务器再做一些多路转换等工作。将处理后的码流推往 CDN 。很多商业 CDN 直接支持 RTMP 以及 HLS 协议。 客户端( WEB, Flash Player, Mobile Player )获取码流进行播放。

播现成的录像文件比这个更省事一些,大致流程相似。

RTMP 本身也是 Adobe 视频协议族中的一员,基于 TCP 协议,多少还是会有延迟。一般的直播也就罢了,如果考虑实时性或者交互性很高,估计还得像 QQ 以及 YY 学习,封装自己的专用协议。
janxin
2016-01-12 23:24:13 +08:00
很多 CDN 都有专门的解决方案,需要现成的话可以直接用一下就好了。各大 CDN (影视网站、阿里云、又拍、七牛之类的)都提供类似服务
Lcys
2016-01-14 13:49:03 +08:00
dellch
2016-03-17 11:53:48 +08:00
@Lcys 请问用什么技术路线?
Lcys
2016-04-15 14:23:56 +08:00
@dellch rtmp
gehurry
2016-12-27 16:44:56 +08:00
@zhujinliang 请问这个视频直播里面会对她的数据流进行加密么 到了客户端在解密出来播放
zhujinliang
2016-12-27 17:31:15 +08:00
@gehurry
一般数据流没有加密
url 可能带有 hash ,需要客户端计算 hash ,服务器判断 hash 是否正确
你可以打开调试工具,查看网络传输,开始直播,然后找到一个持续增大的 flv 文件,复制链接地址,使用 vlc 之类的播放器可以直接打开这个地址,或者使用 wget 之类的工具下载,播放器也可以播放这段下载的视频

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/250111

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX