《视频直播技术详解》系列之一:开篇[通俗易懂]

《视频直播技术详解》系列之一:开篇[通俗易懂]此系列为七牛云的原创,仅转载备份,以供查看。随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。七牛云作为一家以基础服务能力见长的云计算公司,于6月底发布了一个针对视频直播的实时流网络LiveNet和完整的直播云解决方案,很多

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

此系列为七牛云的原创,仅转载备份,以供查看。

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

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

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

(一)开篇

(二)采集和处理

(三)编码和封装

(四)推流和传输

(无)现代播放器原理

(六)延迟优化

(七)SDK 性能测试模型


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

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/162858.html原文链接:https://javaforall.net

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


相关推荐

  • jsp入门教程「建议收藏」

    http://www.yiibai.com/jsp/jsp_syntax.html

    2022年4月8日
    36
  • 初探sendfile「建议收藏」

    初探sendfile「建议收藏」很早就知道sendfile这个专门用来传输大文件的函数,也称为零拷贝,但一直没测试过,今天用了宿舍的网和小组内的网测试了下,发现结果和我预想的不一样。为什么效率高,网上说的也很多了,看下man手册中的内容sendfile()copiesdatabetweenonefiledescriptorandanother.Becausethiscopyingisdo

    2022年6月6日
    43
  • 新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧

    新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧新手如何快速上手双拼,提高打字速度-by小鹤双拼输入法QQ群友-弧更新时间:2013-5-30新手如何快速上手双拼,提高打字速度首先说明,此文仅供参考,每个人需要选择适合自己的方法~纵然效率很重要,终究多练是王道。亲们加油吧……一个月从零开始到速度过百真心不难的。第一,双拼方案选择。(1)如果你已经熟练了某种双拼方案,其实没什么必要去更换——条件反射的更改比建立还要难,需要一…

    2022年6月16日
    47
  • java python oracle推断字符串是否为数字的函数

    java python oracle推断字符串是否为数字的函数

    2022年1月23日
    48
  • arm程序如何调试_arm开发板用什么语言

    arm程序如何调试_arm开发板用什么语言origin:http://blog.sina.com.cn/s/blog_70bb32080100lx1u.html又是一个多月没有动这个Blog嘿嘿,我发现一个有趣的现象,我的Blog在每年的1月底到2月中旬,7月、8月是淡季,每天访问量基本都在100以下,其它时间都是旺季,尤其9月和3月,每天可以到200以上,最高甚至500。我想因该是因为学生们是EE小站访问的主力吧——9月和3月是开

    2022年10月14日
    3
  • ubuntu 卸载php「建议收藏」

    ubuntu 卸载php「建议收藏」卸载:一、删除php的相关包及配置sudoapt-getautoremovephp7*二、删除关联sudofind/etc-name”*php*”|xargsrm-rf三、清除dept列表sudoaptpurge`dpkg-l|grepphp|awk'{print$2}’|tr”\n”””`四、检查是否卸载干净(无返回就是卸载完成)dpkg-l|grepphp7.0…

    2022年5月9日
    42

发表回复

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

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