随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了你们对视频直播领域的关注,吸引了不少互联网创业者或者成熟企业进入该领域。
本文由七牛云技术团队原创分享,结合实时流网络 LiveNet 和直播云解决方案的实践,将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深刻地了解视频直播技术,更好地技术选型。
本文是《移动端实时音视频直播技术详解》系列文章之第一篇,咱们将从总体介绍直播中的各个环节。
<ignore_js_op> php
本文是系列文章中的第1篇,本系列文章的大纲以下:
html
采集是播放环节中的第一环,iOS 系统由于软硬件种类很少,硬件适配性较好,因此比较简单。Android 则不一样,市面上硬件机型很是多,难以作到一个库适配全部硬件。PC 端的采集也跟各类摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件 OBS。android
「80% 的主播没有美颜根本无法看。」不光是美颜,不少其它的视频处理如模糊效果、水印等也都是在这个环节作。目前 iOS 端比较知名的是 GPUImage 这个库,提供了丰富端预处理效果,还能够基于这个库本身写算法实现更丰富端效果。Android 也有 GPUImage 这个库的移植,叫作 android-gpuimage。同时,Google 官方开源了一个伟大的库,覆盖了 Android 上面不少多媒体和图形图像相关的处理。算法
编码主要难点有两个:
服务器
iOS 端硬件兼容性较好,能够直接采用硬编。而 Android 的硬编的支持则可贵多,须要支持各类硬件机型,推荐使用软编。微信
传输涉及到不少端:
网络
推流端和分发端理论上须要支持的并发用户数应该都是亿级的,不过毕竟产生内容的推流端在少数,和消费内容端播放端不是一个量级,可是他们对推流稳定性和速度的要求比播放端高不少,这涉及到全部播放端可否看到直播,以及直播端质量如何。
不少人吐槽如今的 CDN 不靠谱,我也认可传统的 CDN 在新时代显得心有余力不足。你可以借助 CDN 快速实现大规模的流分发,可是稳定高速的推流上传可能还须要本身作不少工做。所以,咱们打造了一个直播专属的实时流网络,接下来咱们会重点介绍这个网络和传统 CDN 的差异。架构
为了让主播推上来的流适配各个平台端各类不一样协议,须要在服务端作一些流处理工做,好比转码成不一样格式支持不一样协议如 RTMP、HLS 和 FLV,一路转多路流来适配各类不一样的网络情况和不一样分辨率的终端设备。
同时,为了配合一些运营需求,好比一些监管部门的要求,咱们在服务端也提供了内容识别如鉴黄的功能。并发
解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的状况下使用 HLS 协议是最好的选择,咱们也提供了可以播放 RTMP 和 HLS 的播放器 SDK。Android 的硬件解码和编码同样也存在兼容性问题,目前比较好的开源播放器是基于 ffplay 的 ijkplayer,咱们也基于此实现了一个更好的 Android SDK。
除了 SDK 的介绍以外,咱们将重点介绍播放器的原理,以及现代视频播放器的基本架构。学习
除了整个直播流程的介绍以外,咱们将围绕当下最火的直播场景如社交直播和游戏直播,介绍它背后的技术方案。这些技术方案不只涉及到七牛这样的直播基础服务,还可能涉及到和场景相关的其它技术,如社交直播下的聊天、点赞和弹幕的支持。
在下一篇连载中,咱们将详细介绍下直播播放环节的前两个环节:采集和处理。
尽请期待。
[1] 开源实时音视频技术WebRTC的文章:
《开源实时音视频技术WebRTC的现状》
《简述开源实时音视频技术WebRTC的优缺点》
《访谈WebRTC标准之父:WebRTC的过去、如今和将来》
《良心分享:WebRTC 零基础开发者教程(中文)[附件下载]》
《WebRTC实时音视频技术的总体架构介绍》
《新手入门:到底什么是WebRTC服务器,以及它是如何联接通话的?》
《WebRTC实时音视频技术基础:基本架构和协议栈》
《浅谈开发实时视频直播平台的技术要点》
《[观点] WebRTC应该选择H.264视频编码的四大理由》
《基于开源WebRTC开发实时音视频靠谱吗?第3方SDK有哪些?》
《开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用》
《简述实时音视频聊天中端到端加密(E2EE)的工做原理》
《实时通讯RTC技术栈之:视频编解码》
《开源实时音视频技术WebRTC在Windows下的简明编译教程》
《网页端实时音视频技术WebRTC:看起来很美,但离生产应用还有多少坑要填?》
>> 更多同类文章 ……
[2] 实时音视频开发的其它精华资料:
《专访微信视频技术负责人:微信实时视频聊天技术的演进》
《实时语音聊天中的音频处理与编码压缩技术简述》
《网易视频云技术分享:音频处理与压缩技术快速入门》
《学习RFC3550:RTP/RTCP实时传输协议基础知识》
《基于RTMP数据传输协议的实时流媒体技术研究(论文全文)》
《声网架构师谈实时音视频云的实现难点(视频采访)》
《浅谈开发实时视频直播平台的技术要点》
《还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!》
《实现延迟低于500毫秒的1080P实时音视频直播的实践分享》
《移动端实时视频直播技术实践:如何作到实时秒开、流畅不卡》
《如何用最简单的方法测试你的实时音视频方案》
《技术揭秘:支持百万级粉丝互动的Facebook实时视频直播》
《简述实时音视频聊天中端到端加密(E2EE)的工做原理》
《移动端实时音视频直播技术详解(一):开篇》
《移动端实时音视频直播技术详解(二):采集》
《移动端实时音视频直播技术详解(三):处理》
《移动端实时音视频直播技术详解(四):编码和封装》
《移动端实时音视频直播技术详解(五):推流和传输》
《移动端实时音视频直播技术详解(六):延迟优化》
《理论联系实际:实现一个简单地基于HTML5的实时视频直播》
《IM实时音视频聊天时的回声消除技术详解》
《浅谈实时音视频直播中直接影响用户体验的几项关键技术指标》
《如何优化传输机制来实现实时音视频的超低延迟?》
《首次披露:快手是如何作到百万观众同场看直播仍能秒开且不卡顿的?》
《Android直播入门实践:动手搭建一套简单的直播系统》
《网易云信实时视频直播在TCP数据传输层的一些优化思路》
《实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器》
>> 更多同类文章 ……
(原文连接:点此进入)