视频直播基础技术总结1

视频直播基础技术总结1-视频直播基础技术总结11.视频直播**视频直播的5个关键的流程:录制->编码->网络传输->解码->播放视频直播平台一般包括推流端,后台系统和客户端。通常包括直播内容采集、直播后台系统和直播内容播放三个模块。1)内容采集:采集的方式有很多,从一般几十块PC摄像头到几十万的专业录制编码设备,还有移动端的手机前后置摄像头;分布式推

大家好,又见面了,我是你们的朋友全栈君。

  • –

> 视频直播基础技术总结1


1. 视频直播
视频直播的5个关键的流程:录制->编码->网络传输->解码->播放
视频直播平台一般包括推流端,后台系统和客户端。通常包括直播内容采集、直播后台系统和直播内容播放三个模块。
1)内容采集:采集的方式有很多,从一般几十块PC摄像头到几十万的专业录制编码设备,还有移动端的手机前后置摄像头;分布式推流:这里是比较成熟的架构,用户在推流之前会通过名字服务,一般是DNS智能解析或是自有按IP调度系统获取最靠谱的推流节点,然后把流上传到服务器。
2)直播后台系统:在分布式推流节点“接入”了用户流之后,后续一系列的分发、转码、截图、录制、存储等构成了直播后台系统;这里根据不同的业务需求,需要有不同的后台服务来支撑。
3)直播内容播放:这个就比较好理解了,一般输出是PC屏幕、手机、现在还有VR头盔。
2. 移动直播编解码
推流编码: 推荐Andorid4.3(API18)或以上使用硬编,以下版本使用软编;iOS使用全硬编方案;
播放解码:Andorid、iOS播放器都使用软解码方案,经过我们和大量客户的测试以及总结,虽然牺牲了功耗,但是在部分细节方面表现会较优,且可控性强,兼容性也强,出错情况少,推荐使用。
软硬编解码优缺点对比:
这里写图片描述
3. 直播协议
国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP。
1)RTMP协议:
是Adobe的专利协议,现在大部分国外的CDN已不支持。在国内流行度很高。原因有几个方面:
1、开源软件和开源库的支持稳定完整。如斗鱼主播常用的OBS软件,开源的librtmp库,服务端有nginx-rtmp插件。
2、播放端安装率高。只要浏览器支持FlashPlayer就能非常简易的播放RTMP的直播,协议详解可以Google了解。相对其他协议而言,RTMP协议初次建立连接的时候握手过程过于复杂(底层基于TCP,这里说的是RTMP协议本身的交互),视不同的网络状况会带来给首开带来100ms以上的延迟。基于RTMP的直播一般内容延迟在2~5秒。
2)HTTP-FLV协议:
即使用HTTP协议流式的传输媒体内容。相对于RTMP,HTTP更简单和广为人知,而且不担心被Adobe的专利绑架。内容延迟同样可以做到2~5秒,打开速度更快,因为HTTP本身没有复杂的状态交互。所以从延迟角度来看,HTTP-FLV要优于RTMP。
3)HLS 协议:
即Http Live Streaming,是由苹果提出基于HTTP的流媒体传输协议。HLS有一个非常大的优点:HTML5可以直接打开播放;这个意味着可以把一个直播链接通过微信等转发分享,不需要安装任何独立的APP,有浏览器即可,所以流行度很高。社交直播APP,HLS可以说是刚需,下来我们分析下其原理 。
基于HLS的直播流URL是一个m3u8的文件,里面包含了最近若干个小视频TS(一种视频封装格式,这里就不扩展介绍)文件,如 http://www.ucloud.cn/helloworld.m3u8 是一个直播留链接,
4)RTP协议:
即Real-time Transport Protocol,用于Internet上针对多媒体数据流的一种传输层协议。实际应用场景下经常需要RTCP(RTP Control Protocol)配合来使用,可以简单理解为RTCP传输交互控制的信令,RTP传输实际的媒体数据。
RTP在视频监控、视频会议、IP电话上有广泛的应用,因为视频会议、IP电话的一个重要的使用体验:内容实时性强。
对比与上述3种或实际是2种协议,RTP和它们有一个重要的区别就是默认是使用UDP协议来传输数据,而RTMP和HTTP是基于TCP协议传输。为什么UDP 能做到如此实时的效果呢?关于TCP和UDP差别的分析文章一搜一大把,这里不在赘述,简单概括:
UDP:单个数据报,不用建立连接,简单,不可靠,会丢包,会乱序;
TCP:流式,需要建立连接,复杂,可靠 ,有序。
实时音视频流的场景不需要可靠保障,因此也不需要有重传的机制,实时的看到图像声音,网络抖动时丢了一些内容,画面模糊和花屏,完全不重要。TCP为了重传会造成延迟与不同步,如某一截内容因为重传,导致1秒以后才到,那么整个对话就延迟了1秒,随着网络抖动,延迟还会增加成2秒、3秒,如果客户端播放是不加以处理将严重影响直播的体验。
总结一下:在直播协议的选择中,如果选择是RTMP或HTTP-FLV则意味着有2~5秒的内容延迟,但是就打开延迟开,HTTP-FLV 要优于RTMP。HLS则有5~7秒的内容延迟。选择RTP进行直播则可以做到1秒内的直播延迟。但就目前所了解,各大CDN厂商没有支持基于RTP直播的,所以目前国内主流还是RTMP或HTTP-FLV。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162841.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • mybatis log plugin激活码【中文破解版】

    (mybatis log plugin激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
  • vr全景制作常用的app有哪些,vr全景拍摄真的难吗?[通俗易懂]

    ​现在互联网发展得很快,从2G网络逐渐进步到5G网络,线上的营销方式也逐渐从文字转变为图片营销。图像呈现出来的效果更能打动用户,也更能吸引用户的注意力,对成交更有帮助。vr全景图展示是很多企业都在使用的一种技术,提高用户的信任度,增强用户粘性。那么vr全景制作app有哪些和vr全景拍摄难吗?下面就给大家简单讲一下吧。一般来说,大多数摄影师都使用鱼眼镜头、单反相机设备来拍摄所需的vr全景图,操作方法比较简单,但是拍摄完我们还需要来处理这个图片,这些步骤就比较麻烦了。vr全景制作app有哪些关于

    2022年4月18日
  • idea/ pycharm全局搜索快捷键不可用

    idea/ pycharm全局搜索快捷键不可用搜狗设置,系统快捷键设置,去掉繁体切换快捷键就ok了

    2022年5月31日
  • BitNami一键安装Redmine

    BitNami一键安装Redmine

    2021年12月15日
  • java jpa是什么_jpa是什么框架?jpa是什么意思?

    java jpa是什么_jpa是什么框架?jpa是什么意思?你了解jpa吗?很多人表示,对于jpa是一个什么框架并不是很了解,那么下面就一起通过下面的文章内容来了解一下jpa吧!jpa其实就是JavaPersistenceAPI的简称,它的中文名字是Java持久层API,是JDK5.0注解或者XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库当中。JPA的总体思想和现有Hibernate、TopLink、JDO等ORM框架大体一致,总…

    2022年6月29日
  • java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一「建议收藏」

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一「建议收藏」对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。本文参考java泛型详解、Java中的泛型方法、 java泛型详解1.概述泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。什么是泛型?为什么要使用泛型?泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传

    2022年7月8日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号