视频直播技术总结分享 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
imzhibo
V2EX    云计算

视频直播技术总结分享

  •  
  •   imzhibo 2016-09-03 16:32:26 +08:00 4679 次点击
    这是一个创建于 3332 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一、直播的技术架构: 直播视频采集 SDK ( PC/IOS/Anddroid )直播 CDN

    (直播流分发加速)直播视频播放器 SDK ( PC/IOS/Android )

    二、音视频处理的一般流程:

    数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示

    1 、数据采集:

    摄像机及拾音器收集视频及音频数据,此时得到的为原始数据

    涉及技术或协议:

    摄像机: CCD 、 CMOS

    拾音器:声电转换装置(咪头)、音频放大电路

    2 、数据编码:

    使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合、打包封装等),得到可用的音视频数据

    涉及技术或协议:

    编码方式: CBR 、 VBR 编码格式 视频: H.265 、 H.264 、 MPEG-4 等,封装容器有 TS 、 MKV 、 AVI 、 MP4 等 音频: G.711μ、 AAC 、 Opus 等,封装有 MP3 、 OGG 、 AAC 等

    3 、数据传输:

    将编码完成后的音视频数据进行传输,早期的音视频通过同轴电缆之类的线缆进行传输, IP 网络发展后,使用 IP 网络优传输

    涉及技术或协议:

    传输协议: RTP 与 RTCP 、 RTSP 、 RTMP 、 HTTP 、 HLS ( HTTP Live Streaming )等

    控制信令: SIP 和 SDP 、 SNMP 等

    4 、解码数据:

    使用相关硬件或软件对接收到的编码后的音视频数据进行解码,得到可以直接显示的图像 /声音

    涉及技术或协议:

    一般对应的编码器都会带有相应的解码器,也有一些第三方解码插件等

    5 、播放显示:

    在显示器(电视、监视屏等)或扬声器(耳机、喇叭等)里,显示相应的图像画面或声音

    涉及技术或协议:

    显示器、扬声器、 3D 眼镜等

    三、常见的视频直播相关协议:

    1 、 RTMP(Real Time Messaging Protocol ,实时消息传送协议)

    RTMP 是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。它有三种变种:

    1 )、工作在 TCP 之上的明文协议,使用端口 1935 ;

    2 )、 RTMPT 封装在 HTTP 请求之中,可穿越防火墙;

    3 )、 RTMPS 类似 RTMPT ,但使用的是 HTTPS 连接;

    RTMP 协议是被 Flash 用于对象、视频、音频的传输。这个协议建立在 TCP 协议或者轮询 HTTP 协议之上。 RTMP 协议就像一个用来装数据包的容器,这些数据既可以是 AMF 格式的数据,也可以是 FLV 中的视音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的包都是按照固定大小的包传输的。

    2 、 RTSP(Real Time Streaming Protocol ,实时流传输协议)

    RTSP 定义了一对多应用程序如何有效地通过 IP 网络传送多媒体数据。 RTSP 提供了一个可扩展框架,数据源可以包括实时数据与已有的存储的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如 UDP 、组播 UDP 与 TCP 提供途径,并为选择基于 RTP 上发送机制提供方法。

    RTSP 语法和运作跟 HTTP/1.1 类似,但并不特别强调时间同步,所以比较能容忍网络延迟。代理服务器的缓存功能也同样适用于 RTSP ,并且因为 RTSP 具有重新导向功能,可根据实际负载情况来切换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。

    3 、 RTP(Real-time Transport Protocol ,实时传输协议)

    RTP 是针对多媒体数据流的一种传输层协议,详细说明了在互联网上传递音频和视频的标准数据包格式。 RTP 协议常用于流媒体系统(配合 RTCP 协议),视频会议和一键通系统(配合 H.323 或 SIP ),使它成为 IP 电话产业的技术基础。

    RTP 是建立在 UDP 协议上的,常与 RTCP 一起使用,其本身并没有提供按时发送机制或其它服务质量( QoS )保证,它依赖于低层服务去实现这一过程。

    RTP 并不保证传送或防止无序传送,也不确定底层网络的可靠性,只管发送,不管传输是否丢包,也不管接收方是否有收到包。 RTP 实行有序传送, RTP 中的序列号允许接收方重组发送方的包序列,同时序列号也能用于决定适当的包位置,如在视频解码中,就不需要顺序解码。

    4 、 RTCP(Real-time Transport Control Protocol ,实时传输控制协议)

    RTCP 是 RTP 的配套协议,为 RTP 媒体流提供信道外的控制。 RTCP 和 RTP 一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。

    RTCP 的主要功能是为 RTP 所提供的服务质量( QoS )提供反馈,收集相关媒体连接的统计信息,例如传输字节数,传输分组数,丢失分组数,单向和双向网络延迟等等。网络应用程序可以利用 RTCP 所提供的信息来提高服务质量,比如限制流量或改用压缩比小的编解码器。

    四、利益相关

    我们团队是做直播技术的,底层架构都是做好的,开放给开发者 sdk 和 api 接口,开发者接入后就可以实现直播的功能。欢迎相互交流学习。我的 qq2479775187

    10 条回复    2016-10-14 10:35:26 +08:00
    wshcdr
        1
    wshcdr  
       2016-09-03 17:13:13 +08:00
    MARK 一下
    qiayue
        2
    qiayue  
    PRO
       2016-09-03 17:17:42 +08:00
    问个问题,已有 RTSP 流,如果不转 HLS 如何实现在网页内播放?
    andreby
        3
    andreby  
       2016-09-03 17:50:48 +08:00   1
    最近要用到云信
    cesar
        4
    cesar  
       2016-09-03 23:06:12 +08:00
    @qiayue
    RTSP 不熟悉,不过不转 HLS 的话,能转 RTMP 么,不知道是不是回答到点上了;
    我做直播流就是 HLS+RTMP 两个数据流,这样覆盖用户多一些
    imzhibo
        5
    imzhibo  
    OP
       2016-09-04 11:44:40 +08:00
    @andreby 那可以先加个 qq ,我来对接你们的项目 qq2479775187
    imzhibo
        6
    imzhibo  
    OP
       2016-09-04 12:05:52 +08:00
    @cesar 现在直播主要用的协议就是 rtmp 吧, hls 在 H5 页面下比较有优势,但是延迟较大。
    andreby
        7
    andreby  
       2016-09-04 13:33:40 +08:00
    @imzhibo 我们老大已经在和你们的技术在联系沟通了 前期
    wilddog
        8
    wilddog  
       2016-09-05 09:05:21 +08:00
    MARK 了!
    cesar
        9
    cesar  
       2016-09-18 12:03:47 +08:00
    @imzhibo 延迟大是个问题,不过看具体应用场景吧,有些场景对实时性要求不高,延迟个十多秒其实也能接受。
    我用 HLS 主要因为 RTMP 似乎都要依赖 flash 才行。
    不知道有没有办法用 html5 实现 RTMP ,有的话肯定 RTMP 方便了。
    crossmaya
        10
    crossmaya  
       2016-10-14 10:35:26 +08:00
    mark 一下
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1447 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 16:47 PVG 00:47 LAX 09:47 JFK 12:47
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86