音视频流简介

1.推流和拉流

推流:指的是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号传到网络的过程

拉流:拉流是指服务器已有直播内容,根据协议类型(如RTMP、RTP、RTSP、HTTP等),与服务器建立连接并接收数据,进行拉取的过程。

举个简单的例子:

作为一家快递公司,在各个小区都有快递公司,所以我提供两种服务:

抓流服务:也就是上门取件

推流服务:由于你怕快递员有非分之想,你选择把物件送到小区内的快递公司

2.相关协议

1.WebRTC

基于协议:UDP

优势:

  • 延迟低(延时一般低至 400ms 以内)
  • 各端支持好

适用场景:直播连麦,视频会议

这是一种基于浏览器的实时通信的开源解决方案,使用 UDP 私有协议来进行媒体推流,而不需要创建离散的媒体段;并且它是面向无连接的,没有 TCP 连接断开时的挥手确认连接关闭的机制,基于这两点,WebRTC 能够做到毫秒级的低延迟,远远低于基于 RTMP 协议的 CDN 分发的延迟。而且,它直接通过浏览器就可以完成推流和播放,对于开发者接入来说实在太方便。

2.RTMP

基于协议:TCP(默认端口1935)

优势:

可以在服务器和客户端服务器之间保持稳定的连接,无论用户的互联网连接质量如何,它都可以无缝低延迟进行流媒体传输。

劣势:

  • TCP协议,端口可能被拦截
  • 需要使用第三方播放器库播放
  • 协议已不再更新,未来兼容性容易出问题

问题与解决方案:

RTMP需要依赖于Flash来播放,但是Chrome等浏览器现已废弃,所以需要通过第三方库,在服务器将RTMP封装为HTTP-FLV编码,然后使用Vedio.js实现播放

关于安卓和IOS还没有搜集到相关解决方案,如果你有好的见解,请解答一下本人的疑惑

特点:

与 CDN 的强绑定,需要借助 CDN 的负载均衡系统将内容推送到接近用户的边缘节点,使用户就近取得所需内容,提高用户访问的响应速度和成功率,解决因分布、带宽、服务器性能带来的访问延迟问题。更多适用于站点加速、点播、短视频等场景。

优势:

适用场景:

不需要实时强互动的直播,比如体育赛事网络直播、演唱会网络直播、新闻现场直播,延迟是可以接受的,并不会影响用户体验。普通直播,使用CDN进行内容分发,会有几秒甚至十几秒的延时,主播和观众的互动只能通过文字短消息或送礼来进行。

4.HLS

HLS是Apple的开放标准,在Android3以上也原生支持.

优势:

  • 使用Http80端口,不会被防火墙拦截

  • 安卓和IOS,safari原生支持

劣势:

  • 实时性差:HLS延迟高
  • 文件碎片:若分发HLS,码流低,切片较小时,小文件分发不是很友好。特别是一些对存储比较敏感的情况,譬如源站的存储,嵌入式的SD卡。

3.各直播平台处理

我发现各直播平台都热衷于P2P,通过用户端直接相互拉流来减少流量

如下:

bilibili(HLS)

HLS直播协议在B站的实践

斗鱼(RTMP+HLS)

斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量? - 知乎 (zhihu.com)

posted @   yikolemon  阅读(211)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示