老司机带你深入了解移动直播技术基础知识

本文深入探讨移动直播技术的基础知识,包括视频开发的内容、直播系统的重要性、直播协议、直播服务器的搭建。通过腾讯云直播 SDK,讲解如何从开通服务到集成 SDK,实现推流与拉流,构建完整的直播系统。同时,文章讨论了直播中的重难点,如首屏时间、稳定性问题和全局负载均衡,为开发者提供了全面的直播技术指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=3319562946,2485584898&fm=26&gp=0.jpg

本文可以了解到

移动端视频直播相关的基础知识,以及如何利用腾讯云直播 SDK 搭建自己的直播系统。

前言

1. 视频时代已经来临

当今的互联网,视频已经成为一股洪流,冲刷着每一个人。

2020 年,由于新型冠状病毒疫情的爆发,视频直播互动更是一飞冲天,在网购、游戏、教育、金融等等方面都呈现爆发式发展。

可见音视频相关的技术,已经是我们不得不去了解的内容了。

2. 视频开发包括哪些内容

移动端的音视频开发一般有:短视频和视频直播互动。

在本人的【Android 音视频开发打怪升级】系列文章中,主要讲解的就是「短视频开发」相关的知识。

而「直播」涉及到的技术,更加庞大,可以说是「短视频开发」的一个超集,因为它不仅涉及到本地视频的编辑,还涉及到直播服务器的架设,以及面对不稳定网络的优化等等,搭建一个直播系统并非易事。

那么你肯定要问了,既然很难,那我直接用第三方的 SDK 就可以了,干嘛还要学习这些晦涩难懂的视频知识?

3. 为什么学习直播基础知识

如果不了解基本知识,直接接入第三方的 SDK 可以吗?当然可以!

但俗话说得好:工欲善其事,必先利其器

如果不了解其中原理,在未来遇到问题时,要么难以有效地解决,要么需要付出比现在成倍的努力。

一、直播基础知识

最原始的直播系统其实并没有想象的那么复杂,无非就是主播端将音视频数据推送到服务器,观众端则从服务器拉取数据播放。

1. 基础流程

通过下面这个数据流程图,能清晰地看到整个直播的过程。

最简单的直播系统

可以看到,「主播客户端」处理的事情,其实就是短视频开发中最重要的内容:

流程 详细操作
音视频数据采集 通过摄像头和麦克风采集
音视频滤镜 通过 OpenGLSoundTouch 等工具实现音视频编辑
音视频编码 通过系统硬编码 或 FFmpeg 软编码,将数据编码为 H264AAC
数据封装打包 将编码好的数据封装成指定的格式

唯一不一样的地方,短视频会将封装好的数据保存到本地,直播则是通过 推流协议 将数据推送到服务器。

关于 H264AAC封装格式 等知识,不清楚的可以查看这篇文章【音视频基础知识】。

  • 推流

推流,是直播中的一个术语,意思是将流媒体数据推送到服务器。如何推流,关键就在于使用的推流协议。

  • 拉流

拉流,指的是「观众端」流媒体数据的拉取,同样也需要通过约定的拉流协议来拉取。

2. 直播协议

直播协议包含了上面提到的 「推流」和「拉流」协议。

主要有一下三种:

  • RTMP

RTMP 全名:Real Time Messaging Protocol,实时消息传送协议。是 Adobe 公司开发的,用于 Flash Player 和服务器间之间传输音视频数据。RTMP 是基于 TCP 开发的,属于应用层的协议,默认端口为 1935

RTMP 主要特点是实时性好,延时比较低(1~3s)。既可以用来推流,也可以用来拉流。

但是由于其基于 TCP 长链接协议,默认端口非公共端口,可能会被防火墙拦截。

RTMP 视频数据封装格式为 flv

  • HTTP-FLV

HTTP-FLV,从其命名可以大概看出工作模式。即:将音视频数据封装为 flv 格式,通过 HTTP 长链接协议传输。既然是基于 HTTP ,其默认端口就是 80,可以直接穿透防火墙。

其传输方式和 RTMP 一样,只是将协议更换为 HTTP,所以实时性也比较好。

由于 HTTP-FLV 的特点,非常适合用于 App 直播拉流。

  • HLS

HLS:HTTP Live Streaming。是苹果公司推出的基于 HTTP 的流媒体传输协议,视频封装格式是 ts,在 iOS 和 Mac 支持比较好。

RTMPHTTP-FLV 不同的是,HSL 是切片传输,它会将视频切为一个个小的 ts 文件,并将切片信息记录在 .m3u8 文件中。

拉流客户端根据 .m3u8 中的 ts 索引信息,按顺序下载播放。

由于其切片的特点,会导致比较大的延迟,在实时性要求比较高的情况下,效果不好。

以上,就是在直播系统中经常使用到的三大协议。

综合以上特点,推流的时候,经常使用的是 RTMP 协议;拉流播放的时候,经常使用的是 HTTP-FLVHLS 协议。

3. 直播服务器

有了协议,那么客户端和服务器就可以通讯了,怎么样搭建服务器呢?

服务器:一般都是 Nginx + 协议拓展模块。

协议拓展模块

i. nginx-rtmp-module ,不支持 http-flv;

ii. nginx-http-flv-module,兼容nginx-rtmp-module,并支持 http-flv 直播;

iii. srs(simple-rtmp-server),支持三种协议。

搭建服务器也是一个比较繁琐的过程,涉及到的知识也很多,本文不再深入,网上也有很多相关资料可查看。

二、直播中的重难点

在直播中,有几个非常重要的地方,会直接影响直播效果,导致用户流失。

1. 首屏时间

首屏时间,即从观众打开直播,到看到画面呈现出来的时间。影响这个时间的是 H264 编码中的一个概念: GOP

  • GOP

全称:Group of Picture。即一组帧组成的一个序列。

H264 中,分别有 I帧、P帧、B帧 三种帧类型。

GOP 就是由一个 I帧 和多个 P帧B帧 组成的一组相近的画面 。

GOP

解码器可以直接解码 I帧 ,但是 P帧B帧 必须依赖 I帧,或者前后的 P 或 B 才能解码。

首次连上直播间时,需要抛弃掉 PB 帧,等待 I帧

所以,影响首屏时间最重要的因素就是 I帧,也就是两个 GOP 之间的间隔时间。

GOP 间隔的设置并非越小越好,太小则两个 I帧 之间的 P/B帧 越少,压缩率越低,画面质量越差,需要做好权衡。

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值