视频直播技术详解之一:开篇

视频直播技术详解之一:开篇随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。七牛云作为一家以基础服务能力见长的云计算公司,于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣

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

随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。

七牛云作为一家以基础服务能力见长的云计算公司,于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完整的直播云解决方案,很多开发者对这个网络和解决方案的细节和使用场景非常感兴趣。

结合七牛实时流网络 LiveNet 和直播云解决方案的实践,我们将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。

本系列文章大纲如下:

(一)开篇

(二)采集和处理

(三)编码和封装

(四)推流和传输

(无)现代播放器原理

(六)延迟优化

(七)SDK 性能测试模型 

本文是《解密视频直播技术》系列之一:开篇,我们将从整体介绍直播中的各个环节。  

UEditor_snapScreen_tmp.jpg
 

1.采集

采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。PC 端的采集也跟各种摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件 OBS。

2.处理

「80% 的主播没有美颜根本没法看。」不光是美颜,很多其它的视频处理如模糊效果、水印等也都是在这个环节做。目前 iOS 端比较知名的是 GPUImage 这个库,提供了丰富端预处理效果,还可以基于这个库自己写算法实现更丰富端效果。Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。同时,Google 官方开源了一个伟大的库,覆盖了 Android 上面很多多媒体和图形图像相关的处理。

3.编码

编码主要难点有两个:1. 处理硬件兼容性问题。2. 在高 fps、低 bitrate 和音质画质之间找到平衡。iOS 端硬件兼容性较好,可以直接采用硬编。而 Android 的硬编的支持则难得多,需要支持各种硬件机型,推荐使用软编。

4.推流和传输

传输涉及到很多端:从主播端到服务端,从收流服务端到边缘节点,以及再从边缘节点到观众端。

推流端和分发端理论上需要支持的并发用户数应该都是亿级的,不过毕竟产生内容的推流端在少数,和消费内容端播放端不是一个量级,但是他们对推流稳定性和速度的要求比播放端高很多,这涉及到所有播放端能否看到直播,以及直播端质量如何。

很多人吐槽现在的 CDN 不靠谱,我也承认传统的 CDN 在新时代显得心有余力不足。你能够借助 CDN 快速实现大规模的流分发,但是稳定高速的推流上传可能还需要自己做很多工作。因此,我们七牛打造了一个直播专属的实时流网络,接下来我们会重点介绍这个网络和传统 CDN 的差别。

5.转码

为了让主播推上来的流适配各个平台端各种不同协议,需要在服务端做一些流处理工作,比如转码成不同格式支持不同协议如 RTMP、HLS 和 FLV,一路转多路流来适配各种不同的网络状况和不同分辨率的终端设备。

同时,为了配合一些运营需求,比如一些监管部门的要求,我们在服务端也提供了内容识别如鉴黄的功能。

6.解码和渲染

解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的情况下使用 HLS 协议是最好的选择,我们也提供了能够播放 RTMP 和 HLS 的播放器 SDK。Android 的硬件解码和编码一样也存在兼容性问题,目前比较好的开源播放器是基于 ffplay 的 ijkplayer,我们也基于此实现了一个更好的 Android SDK。

除了 SDK 的介绍之外,我们将重点介绍播放器的原理,以及现代视频播放器的基本架构。

7.直播场景化解决方案

除了整个直播流程的介绍之外,我们将围绕当下最火的直播场景如社交直播和游戏直播,介绍它背后的技术方案。这些技术方案不仅涉及到七牛这样的直播基础服务,还可能涉及到和场景相关的其它技术,如社交直播下的聊天、点赞和弹幕的支持。

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

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

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


相关推荐

  • 如何和开发工程师交流

    如何和开发工程师交流

    2021年7月31日
    53
  • 无线AP、WiFi、WLAN是什么关系?

    无线AP、WiFi、WLAN是什么关系?最近在看科技论文,有些基础知识不是很清楚,故作了解近年来,无线AP被越来越多的应用于商场、车站、机场等公共场所,已变得与我们的生活息息相关,成为社会发展的一个趋势。但许多人弄不清楚无线AP与WiFi、WLAN之间的关系,以为WiFi就是WLAN,它们之间到底有什么不同?公共WiFi其实是一种无线AP技术今年央视315晚会曝光的公共WiFi安全隐患引起了社会各界的关注,但是有一个细节需要值得注意,那…

    2022年7月11日
    73
  • 音频数字化简单原理「建议收藏」

    音频数字化简单原理     从字面上来说,数字化(Digital)就是以数字来表示,例如用数字去记录一张桌子的长宽尺寸,各木料间的角度,这就是一种数字化。跟数位常常一起被提到的字是模拟(Analog/Analogue),模拟的意思就是用一种相似的东西去表达,例如将桌子用传统相机将三视图拍下来,就是一种模拟的记录方式。两个概念:1、分贝(dB):声波振幅的度量单位,非

    2022年4月17日
    63
  • python-列表(list)使用方法

    python-列表(list)使用方法这篇文章主要整理和记录python中列表(list)的使用方法,适合像我一样初学python的朋友们哟!List是一个有序的、可重复的数据类型,可以对其元素进行添加、删除、修改等操作。List支持

    2022年7月3日
    31
  • centos7 安装gitea使用

    centos7 安装gitea使用参考官网 https gitea iohttps docs gitea iohttps docs gitea io en us install from binary 关于 GiteaGitea 是一个自己托管的 Git 服务程序 他和 GitHub BitbucketorG 等比较类似 他是从 Gogs 发展而来 不过我们已经 Fork 并且命名为 Gitea 对

    2025年9月25日
    6
  • 各种开源SLAM算法「建议收藏」

    各种开源SLAM算法「建议收藏」OpenSLAMhttp://openslam.org/FALKOLib(2DLIDAR)GMapping,GridSLAM(Tolearngridmapsfromlaserrangedata)tinySLAM(Laser-SLAMalgorithmin200linesofCcode)UnscentedFastSLAM(Laserdata,M…

    2022年6月16日
    59

发表回复

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

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