移动端实时音视频直播技术详解(一):开篇
移动端实时音视频直播技术详解(一):开篇
1、引言
随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革。手机设备拍摄视频能力和网络的升级催生了大家对视频直播领域的关注,吸引了很多互联网创业者或者成熟企业进入该领域。
本文由七牛云技术团队原创分享,结合实时流网络 LiveNet 和直播云解决方案的实践,将用七篇文章,更系统化地介绍当下大热的视频直播各环节的关键技术,帮助视频直播创业者们更全面、深入地了解视频直播技术,更好地技术选型。
本文是《移动端实时音视频直播技术详解》系列文章之第一篇,我们将从整体介绍直播中的各个环节。
<ignore_js_op>
2、系列文章
本文是系列文章中的第1篇,本系列文章的大纲如下:
- 《移动端实时音视频直播技术详解(一):开篇》(本文)
- 《移动端实时音视频直播技术详解(二):采集》
- 《移动端实时音视频直播技术详解(三):处理》
- 《移动端实时音视频直播技术详解(四):编码和封装》
- 《移动端实时音视频直播技术详解(五):推流和传输》
- 《移动端实时音视频直播技术详解(六):延迟优化》
3、音视频采集
采集是播放环节中的第一环,iOS 系统因为软硬件种类不多,硬件适配性较好,所以比较简单。Android 则不同,市面上硬件机型非常多,难以做到一个库适配所有硬件。PC 端的采集也跟各种摄像头驱动有关,推荐使用目前市面上最好用的 PC 端开源免费软件 OBS。
4、音视频处理
「80% 的主播没有美颜根本没法看。」不光是美颜,很多其它的视频处理如模糊效果、水印等也都是在这个环节做。目前 iOS 端比较知名的是 GPUImage 这个库,提供了丰富端预处理效果,还可以基于这个库自己写算法实现更丰富端效果。Android 也有 GPUImage 这个库的移植,叫做 android-gpuimage。同时,Google 官方开源了一个伟大的库,覆盖了 Android 上面很多多媒体和图形图像相关的处理。
5、音视频编码
编码主要难点有两个:
- 处理硬件兼容性问题。
- 在高 fps、低 bitrate 和音质画质之间找到平衡。
iOS 端硬件兼容性较好,可以直接采用硬编。而 Android 的硬编的支持则难得多,需要支持各种硬件机型,推荐使用软编。
6、推流和传输
传输涉及到很多端:
- 从主播端到服务端;
- 从收流服务端到边缘节点;
- 以及再从边缘节点到观众端。
推流端和分发端理论上需要支持的并发用户数应该都是亿级的,不过毕竟产生内容的推流端在少数,和消费内容端播放端不是一个量级,但是他们对推流稳定性和速度的要求比播放端高很多,这涉及到所有播放端能否看到直播,以及直播端质量如何。
很多人吐槽现在的 CDN 不靠谱,我也承认传统的 CDN 在新时代显得心有余力不足。你能够借助 CDN 快速实现大规模的流分发,但是稳定高速的推流上传可能还需要自己做很多工作。因此,我们打造了一个直播专属的实时流网络,接下来我们会重点介绍这个网络和传统 CDN 的差别。
7、实时音视频转码
为了让主播推上来的流适配各个平台端各种不同协议,需要在服务端做一些流处理工作,比如转码成不同格式支持不同协议如 RTMP、HLS 和 FLV,一路转多路流来适配各种不同的网络状况和不同分辨率的终端设备。
同时,为了配合一些运营需求,比如一些监管部门的要求,我们在服务端也提供了内容识别如鉴黄的功能。
8、解码和渲染
解码和渲染,也即音视频的播放,目前 iOS 端的播放兼容性较好,在延迟可接受的情况下使用 HLS 协议是最好的选择,我们也提供了能够播放 RTMP 和 HLS 的播放器 SDK。Android 的硬件解码和编码一样也存在兼容性问题,目前比较好的开源播放器是基于 ffplay 的 ijkplayer,我们也基于此实现了一个更好的 Android SDK。
除了 SDK 的介绍之外,我们将重点介绍播放器的原理,以及现代视频播放器的基本架构。
9、直播场景化解决方案
除了整个直播流程的介绍之外,我们将围绕当下最火的直播场景如社交直播和游戏直播,介绍它背后的技术方案。这些技术方案不仅涉及到七牛这样的直播基础服务,还可能涉及到和场景相关的其它技术,如社交直播下的聊天、点赞和弹幕的支持。
10、下篇内容提要
在下一篇连载中,我们将详细介绍下直播播放环节的前两个环节:采集和处理。
- 面对市场上各种视频采集源,直播应用开发者应该如何去完整的覆盖?
- 市场上主播的各种需求如美颜、水印、连麦互动等该怎么去满足?
尽请期待。
附录:更多实时音视频技术文章
[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数据传输层的一些优化思路》
《实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器》
>> 更多同类文章 ……
(原文链接:点此进入)
posted @ 2019-01-24 09:32 laughingQing 阅读(...) 评论(...) 编辑 收藏
移动端实时音视频直播技术详解(一):开篇相关推荐
- 【音视频第6天】基础知识-移动端实时音视频直播技术详解和开源工程WebRTC的技术原理和使用浅析
本文是系列文章中的第1篇,本系列文章的大纲如下: <移动端实时音视频直播技术详解(一):开篇> <移动端实时音视频直播技术详解(二):采集> <移动端实时音视频直播技术详 ...
- 移动端实时音视频直播技术中推流和传输详解
推流是直播的第一公里,直播的推流对这个直播链路影响非常大,如果推流的网络不稳定,无论我们如何做优化,观众的体验都会很糟糕.所以也是我们排查问题的第一步,如何系统地解决这类问题需要我们对相关理论有基础的 ...
- 即时通讯开发时移动端实时音视频直播技术之处理
视频或者音频完成采集之后得到原始数据,为了增强一些现场效果或者加上一些额外的效果,我们一般会在将其编码压缩前进行处理,比如打上时间戳或者公司 Logo 的水印,祛斑美颜和声音混淆等处理.在主播和观众连 ...
- 浅析即时通讯开发之移动端实时音视频直播技术编码和封装
视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本.同样,对 ...
- 视频直播技术详解(0)开篇
(原标题:<视频直播技术详解>系列之一:开篇) 文|何李石 随着互联网用户消费内容和交互方式的升级,支撑这些内容和交互方式的基础设施也正在悄悄发生变革.手机设备拍摄视频能力和网络的升级催生 ...
- 《视频直播技术详解》之二:编码和封装、推流和传输
视频编码是本系列一个重要的部分,如果把整个流媒体比喻成一个物流系统,那么编解码就是其中配货和装货的过程,这个过程非常重要,它的速度和压缩比对物流系统的意义非常大,影响物流系统的整体速度和成本.同样,对 ...
- 《视频直播技术详解》系列:(4)采集
原文来自七牛云,感谢原作者. <视频直播技术详解>系列:(0)汇总 采集是整个视频推流过程中的第一个环节,它从系统的采集设备中获取原始视频数据,将其输出到下一个环节.视频的采集涉及两方面数 ...
- 视频直播技术详解(8)直播云 SDK 性能测试模型
<视频直播技术详解>系列之八:直播云 SDK 性能测试模型 牛小七2016年10月12日发布在 视频直播技术详解 七牛云于 6 月底发布了一个针对视频直播的实时流网络 LiveNet 和完 ...
- 视频直播技术详解(7)现代播放器原理
<视频直播技术详解>系列之七:现代播放器原理 牛小七2016年9月29日发布在 视频直播技术详解 from: http://blog.qiniu.com/archives/7040 七牛云 ...
最新文章
- Java 9 揭秘(16. 虚拟机栈遍历)
- 关于《关于一道C#上机题的一点想法》
- AOP原理-创建AOP代理--AnnotationAwareAspectJAutoProxyCreator【InstantiationAwareBeanPostProcessor】的作用
- java内存 phd文件抓取_您可以从IBM PHD Java堆转储中提取字符串的值吗?
- substr(IndexAction,1,-6)
- C++和Rust_后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust
- LINUX系统中动态链接库的创建和使用
- pythonpandas重复数据统计_python – 连续的pandas数据帧之间的重复计算
- Day002 20210207
- 在OpenSSL中添加自定义加密算法
- Win7+vmware+xpsp3+vs2010驱动开发环境搭建及调试方法
- matlab 按文件名排序,文件名排序Matlab程序
- couchbase java 手册_couchBase在java中使用的基本知识
- 铁路计算机工程师论文,工程技术类有关论文格式模板,关于铁路工程师职文2016年相关论文范本...
- 【自考】数据结构导论
- Java实现FTP文件上传和下载
- java里面获取map的key和value的方法
- 标签打印软件制作标签时如何导入品牌logo
- 盗版xp成功验证成正版,享受正版增值服务!
- 监控mysql锁定状态_mysql InnoDB锁等待的查看及分析
热门文章
- 24V转12V,9V,8V,6V,5V,3.3V,3V降压芯片和线性LDO选型介绍
- 【超详细】FL Studio 21新版更新全解析!80项更新与改进!
- python3下tensorflow练习(八)之迁移学习
- hackthebox- Arctic (考点:ColdFusion安全/windows)
- 云炬股市学习笔记20220118
- Android Studio 配置翻译工具
- 【分析数据集各类GT数量分布】
- 强哥说Java--Java Scanner 类
- 手机端扫描证件识别SDK
- CMT2380F32模块开发0-总览