直播相关问题
一、直播推流相关
1、推流基本原理
典型的直播基本流程如下:
其中,推流部分包括采集、前处理、编码、封装、推流等具体环节。
2、直播推流需要哪些准备条件?
执行一次高质量的直播推流,需要提前准备以下必要条件:
准备条件 | 示例 | 功能 | 规格要求或建议 |
---|---|---|---|
视频采集设备 | 如摄像头、摄像机、专业导播设备 | 图像信号采集 | 采集分辨率在 1080P 及以上 |
音频采集设备 | 如麦克风、专业导播设备 | 声音信号采集 | 无要求 |
网络 | 如有线网络、无线网络 | 网络传输 | - 建议使用有线网络 - 上行带宽在 10Mpbs 以上,且相对稳定 - 防火墙必须满足防火墙配置要求 |
推流设备 | 如电脑、手机 | 基础设施 | - 建议使用 PC 台式机或笔记本 - 建议使用 Intel i5 九代及以上规格 CPU - 建议使用 8G 以上内存 |
推流软件 | 如微吼直播客户端、第三方推流软件 OBS | 编码推流 | - 浏览器推流,建议使用 Chrome 最新版本浏览器 - 第三方软件推流,建议使用 OBS |
3、支持哪些音视频编码?
直播推流的编码环节支持以下音视频编码协议:
类型 | 协议 | 介绍 |
---|---|---|
视频 | H.264 | 行业内最广泛使用的视频压缩标准,具有高效的压缩率和出色的视频质量 |
视频 | VP8 | 由谷歌开发和推广的一种开源视频编码格式,以支持流媒体和实时通信应用 |
音频 | AAC | 具有更高的压缩效率,支持多声道音频,适应各种比特率和采样频率。 |
音频 | OPUS | 专为实时互联网应用设计,能够动态适应不同的比特率、网络状况和延迟要求 |
注:
- 使用 RTMP 协议直播推流,一般使用 H.264+AAC
- 使用 WebRTC 协议推流或互动,一般使用 VP8+OPUS
4、支持哪些直播推流协议?
直播推流支持以下流媒体传输协议:
协议 | 传输层 | 适用场景 | 适用终端 | 简介 |
---|---|---|---|---|
RTMP | TCP | 标准直播 | 微吼直播客户端 手机原生 APP 第三方推流软件 | RTMP(实时消息传输协议)是一种主要用于视频、音频及数据 在互联网或局域网中实时传输的协议,被广泛应用于各种直播平台和流媒体服务。 |
WebRTC | UDP | 互动直播 互动连麦 | 浏览器页面 其他连麦终端 | WebRTC(Web Real-Time Communication)是一种支持网页和移动应用 进行实时音视频通信的开源项目和协议,提供高性能、低延迟的 P2P 数据传输 能力,广泛应用于视频会议、在线教育和实时交互等领域。 |
注:
- 使用浏览器网页推流,仅支持 WebRTC 协议,不支持 RTMP 协议
- 使用第三方推流软件,仅支持 RTMP 协议,不支持 WebRTC 协议
5、支持哪些推流终端和方式?
直播推流支持以下终端和方式,请根据实际情况选择最合适的方式:
终端类型或方式 | 示例 | 适用情况 |
---|---|---|
客户端 | 微吼直播客户端 | 规律、稳定、长期的直播活动 |
手机原生 APP | 微吼 Android-SDK、微吼 IOS-SDK | 户外直播 |
浏览器 | chrome 浏览器 | 快捷使用或邀请互动连麦等场景 |
第三方推流软件 | OBS、VMIX | 对直播清晰度有更高要求的大型直播活动 |
伪直播 | 定时直播 | 提前录制视频且自动开播的场景 |
拉流直播 | 拉流直播 | 第三方平台提供直播源的场景 |
注:
- 使用浏览器页面推流,建议使用 chrome 最新版本。由于浏览器性能有限,建议推流分辨率不要超过 720P。
- 使用第三方软件推流,由于各类软件的稳定性和兼容性可能存在瑕疵,请在使用时注意检查。
6、浏览器是否能 RTMP 推流?
浏览器不支持 RTMP 推流,仅支持 WebRTC 推流。
浏览器推流的典型推流流程如下:
需要注意,为了适应不同的播放终端和应用环境,后端服务通过“旁路混流”技术,将浏览器推送的 WebRTC 流,经过音视频混合,推送为一路 RTMP 流,并通过直播系统分发。同理,如果直播间内使用多人互动连麦,最终输出的仍是一路多画面多音频混合的 RTMP 直播流。
7、如何获取推流地址?
使用第三方软件推流时,仅支持 RTMP 协议,可通过以下方式获取推流地址:
- 在微吼直播进入直播活动开播页面,选择第三方推流模式后,即可获取推流地址。
- 通过请求微吼直播开放平台 API 获取推流地址。
8、RTMP 推流地址格式?
完整的 RTMP 推流地址示例如下:
(完整推流地址) rtmp://rslive.vhall.com:1935/vhallyun?vhost=thirdVhost?token=5AEEF274t66ED11B8/lss_12345678
注意,某些第三方推流软件(如 OBS、VMIX)要求填写的推流地址分为两段,则请按以下规则输入:
(推流地址) rtmp://rslive.vhall.com:1935/vhallyun?vhost=thirdVhost?token=5AEEF274t66ED11B8
(推流码) lss_12345678
9、RTMP 推流地址多长时间内有效?
自获取推流地址的时间开始,在 7x24 小时内有效。 过期后该地址失效无法推流,需重新获取。
10、如何设置合适的推流参数?
微吼直播平台对推流参数不做限制,但建议用户根据实际情况选择合适的参数。以下列举常见的分辨率及对应码率:
分辨率 | 帧率 | 建议码率范围(kbps) | 备注 |
---|---|---|---|
3840×2160(4K) | 30 | 4000~8000 | 应根据具体的网络情况和性能表现,具体调整大小 |
2560×1440(2K) | 30 | 3000~6000 | 应根据具体的网络情况和性能表现,具体调整大小 |
1920x1080 | 25 | 1500~2500 | 应根据具体的网络情况和性能表现,具体调整大小 |
1280x720 | 25 | 800~1800 | 应根据具体的网络情况和性能表现,具体调整大小 |
960x540 | 25 | 500~1200 | 应根据具体的网络情况和性能表现,具体调整大小 |
注:
- 微吼直播平台不限制推流分辨率和码率,客户可根据实际需要而设置。
- 设置分辨率越高,对推流设备的性能要求较高,且可能导致观看端解码性能不足,造成观看卡顿。一般建议不超过 1080P。
- 设置码率越高,对推流网络的带宽和稳定性要求较高,且可能导致观看端下行带宽不足,造成观看卡顿。一般建议不超过 3000kbps。
- 更详细的第三方推流软件设置,参考OBS 推流配置建议。
11、是否支持双推热备?
是。如有需要,请在正式活动前提前联系商务开通!
直播间开通双推热备后,支持向一个流地址推两路流,观看端只能看到第一个推流的内容,第二个推流的作为备用流。当第一路流异常断开,观看画面自动切换到第二路流。
注:要求两路推流的配置参数(分辨率、帧率、编码参数等)完全相同!
12、是否支持海外地区推流?
是。微吼推流服务节点,在海外分布北美、欧洲、东南亚等地,支持根据地理位置自动选择就近接入节点。
13、直播推流内容是否有安全审核?
是。微吼对直播的图像、声音、文字等内容,进行涉政/暴恐/色情等多种类别的检测识别。如有敏感或违规内容,微吼将及时采取相应处理措施!
二、直播播放相关
1、播放基本原理
典型的直播基本流程如下:
其中,播放部分包括拉流、解封装、解码、渲染等具体环节。
2、支持哪些直播播放协议?
播放协议 | 协议 | 优点 | 缺点 | 延迟 | 适用终端 | 适用活动 |
---|---|---|---|---|---|---|
RTMP | TCP 长连接 | 延迟较低 | - 浏览器不支持 - 使用非标准 TCP 端口 | 3s~6s | 手机原生 APP | 标准直播 |
HTTP-FLV | HTTP 长连接 | 延迟较低 | 浏览器依赖 MSE,不完全支持 (IOS 手机浏览器不支持) | 3s~6s | H5 浏览器(IOS 手机除外) | 标准直播 |
HLS | HTTP 短连接 | 多平台支持度高 | 延迟高 | 10s~30s | H5 浏览器(PC 端、移动端) | 标准直播 |
WebRTC | UDP | - 延迟低 - 网络抗性高 | - 浏览器不完全支持 - 成本较高 | <1s | H5 浏览器(PC 端、移动端) | 快直播 |
注:
- 根据直播活动类型,标准直播一般使用 RTMP/HTTP-FLV/HLS 协议播放,快直播一般使用 WebRTC 协议播放。
- 标准直播使用浏览器播放时,优先使用 HTTP-FLV 播放,如果当前浏览器不支持 MSE,则降级使用 HLS 播放。
3、播放支持哪些终端?
直播播放主要支持以下终端类型,请根据实际情况选择最合适的方式:
终端类型 | 示例 | 适用情况 |
---|---|---|
浏览器页面 | PC 端浏览器、移动端浏览器 | 访问网页链接即可随时观看 |
手机原生 APP | 微吼 Android-SDK、微吼 IOS-SDK | 客户通过对接 SDK 定制业务应用 |
4、如何获取拉流地址?
可以使用微吼直播平台提供的观看页链接直接观看,或使用开放平台 SDK 集成开发实现观看,一般无需获取拉流地址。
如有特殊需求,请联系商务沟通!
5、拉流地址由什么组成?
如果通过商务途径获取拉流地址,可以看到拉流地址示例如下:
(RTMP协议地址) rtmp://rtmp.vhallyun.com/vhallyun/StreamName?token=xxxxxxxx
(HTTP-FLV协议地址) https://rtmp.vhallyun.com/vhallyun/StreamName.flv?token=xxxxxxxx
(HLS协议地址) https://rtmp.vhallyun.com/vhallyun/StreamName/livestream.m3u8?token=xxxxxxxx
播放地址由播放前缀、播放域名、应用名称、流名称、播放协议后缀、鉴权 token 组成:
- 播放前缀: rtmp://或 https://
- 播放域名:微吼直播播放域名
- 应用名称:一般为"vhallyun"
- 流名称:每个直播活动有独立的流名称
- 播放协议后缀:.flv 或.m3u8
- 鉴权 token:用于直播安全防盗链
6、支持播放哪些分辨率档位?
默认情况下, 播放端视频流的分辨率和音视频质量,等同于发起端推流的分辨率和质量。
同时,考虑到观看端的多样性和适配性,以及不同的网络因素,微吼直播服务将源流转码输出不同分辨率不同码率的流,供播放端选择和观看。支持播放的清晰度有以下:
- 原画(即推流源流)
- 高清(720P,1500kbps)
- 标清(480P,800kbps)
- 流畅(360P,300kbps)
- 纯音频(仅音频,64kbps)
注:
- 观看端可根据当前的网络情况或播放状态,自主选择合适的播放清晰度。例如当前网络不佳,则选择更低档位的清晰度。
- 如需开通所有清晰度转码, 请联系商务!
7、是否支持自动播放?
是,支持在微吼直播平台配置开关。
注意:自动播放受浏览器内核策略限制,因此仍有概率自动播放失败。自动播放失败后,需用户自主点击播放。
三、直播清晰度相关
1、清晰度由哪些因素影响?
清晰度体验由多种因素共同影响,包括以下方面:
- 媒体采集设备
- 采集拍摄质量很大程度决定了直播质量
- 推流参数
- 编码参数很大程度决定了编码质量
- 推流网络
- 推流网络不佳可能导致清晰度降级
- 播放端
- 选择更高的清晰度线路
2、如何提高清晰度体验?
基于以上介绍,请从以下几个方面优化提升:
- 媒体采集设备
- 注意拍摄素材,尽量避免背景过于复杂(如舞台炫光),尽量避免运动幅度过大
- 建议使用高清摄像机,且采集分辨率在 1080P 及以上
- 推流参数
- 分辨率,建议使用 1080P 及以上
- 码率参数,根据实际情况增加。(对低运动的直播内容(比如固定摄像机的讲座内容)等可以适当减小码率,针对高运动的直播内容(比如足球比赛或者娱乐活动等)可以适当增大码率)
- 推流网络
- 保障上行带宽充足且稳定
- 播放线路
- 播放原画可带来更优体验。清晰度从高到低:原画 > 高清 > 标清 > 流畅。
四、直播延迟相关
1、播放延时一般是多大?
播放延迟一般指端到端延迟,主要与播放协议有关:
- RTMP 协议: 3~6s
- HTTP-FLV 协议: 3~6s
- HLS 协议: 10~30s
- WebRTC 协议:<2s
2、播放延迟由哪些因素影响?
全面考虑,播放延迟可能由多种因素共同影响,其中包括:
- 推流网络
- 推流网络拥塞,可能导致数据发送不及时
- 推流参数配置
- 推流参数不合适,可能引起延迟增大
- 服务端处理
- 清晰度转码可能增加 1s 的额外延迟
- 播放网络
- 播放端网络波动,导致播放器缓冲区累积,从而引起延迟变高;而且播放时间越久,延迟越高
- 播放协议
- 例如使用 HLS 协议会导致延迟较大
3、如何优化端到端的直播延迟?
基于以上原理介绍,可以在以下方面调整以降低直播延迟,包含:
- 推流端
- 保障推流网络带宽充足且持续稳定
- GOP 参数(关键帧间隔秒数),建议设置为 2s
- 码率参数,建议不高于 4mpbs
- 观看端
- 选择播放原画线路
- 使用合适的设备(例如 IOS 手机浏览器仅支持播放 HLS 协议,延迟可能达到 10s~30s)
- 适当刷新(当播放网络波动导致缓冲区累积时,通过刷新回到最新直播画面)
- 活动类型
- 选择使用无延迟直播,可将延迟缩短至<2s
4、如何使用无延迟直播(快直播)?
在微吼直播平台创建活动时,选择无延迟直播模式,可将端到端延迟优化至<2s。
如有需求,请联系商务开通!
五、直播异常排查
1、直播推流失败
推流失败,需要排查推流端的原因:
- 设备异常
- 检查媒体采集设备是否正常,如有问题请更换设备
- 检查推流软件是否则正常,如有问题请更换设备
- 推流地址错误或过期
- 检查 RTMP 推流地址是否正确使用
- 检查 RTMP 地址是否已超过 7x24 小时,如已过期,请重新获取
- 网络异常
- 通过 ping 命令和 telnet 命令,检查推流地址和端口是否可连通
- 如无法连通,可能是所在网络的防火墙限制,可以尝试切换网络(如 5G)
2、直播播放失败
播放失败,应先检查推流源流是否正常,然后检查播放端:
- 推流源流
- 使用多个设备对比播放,如有正常播放,说明源流正常
- 播放端
- 设备兼容性(如仅少量固定机型或浏览器发生失败,则一般为设备兼容性问题,请更换设备对比测试)
- 网络异常(如下行网络异常可导致播放失败,可以尝试切换网络)
3、直播播放卡顿
此问题涉及的原因较多,请参考以下各环节的问题可能性,并根据现场实际情况进行处理:
- 推流端
- 参数问题(配置帧率应达到每秒 15 帧以上,建议为 25)
- 性能问题(由于设备性能不足或占用过大,导致编码视频帧不足。请检查,并满足相应要求。)
- 上行网络问题(由于网络带宽不足或波动,导致数据传输丢包。请检查,并满足相应要求。)
- 观看端
- 设备兼容性问题 (如仅少量固定机型或浏览器发生卡顿,则一般为设备兼容性问题,请更换设备对比测试)
- 设备性能问题(如播放终端性能不足或占用过大,可能导致播放卡顿)
- 下行网络问题(如下行网络带宽不足或波动,导致播放数据不足且播放卡顿)
- 异常错误问题(如使用浏览器观看,可通过开发这工具 F12->console 查看是否有报错日志)
4、直播播放画面不清晰
此问题涉及的原因较多,请参考以下各环节的问题可能性,并根据现场实际情况进行处理:
- 推流端,
- 检查视频采集设备是否正常。
- 检查分辨率是否在 1080P 及以上。
- 根据画面场景设置码率。对低运动的直播内容(比如固定摄像机的讲座内容)等可以适当减小码率,针对高运动的直播内容(比如足球比赛或者娱乐活动等)可以适当增大码率。
- 观看端
- 在播放器请选择【原画】观看,清晰度更优。
5、直播播放音画不同步
播放音画不同步,应先检查推流源流是否正常,然后检查播放端:
- 推流源流
- 使用多个其他设备对比播放,如有正常播放,说明源流正常
- 播放端
- 设备兼容性(如仅指定机型发生失败,则可能为兼容性问题,请更换设备对比测试)
6、直播播放画面花屏
播放画面花屏,应先检查推流源流是否正常,然后检查播放端:
- 推流源流
- 使用多个其他设备对比播放,如有正常播放,说明源流正常
- 播放端
- 设备兼容性(如仅指定机型发生失败,则可能为兼容性问题,请更换设备对比测试)
7、直播播放声音异常
播放声音异常,应先检查推流源流是否正常,然后检查播放端:
- 推流源流
- 使用多个其他设备对比播放,如有正常播放,说明源流正常
- 播放端
- 设备兼容性(如仅指定机型发生失败,则可能为兼容性问题,请更换设备对比测试)
8、播放画面黑边或展示不全
由于推流画面和播放器区域的比例大小不一致,导致未完全填充。请调整推流分辨率比例为 16:9。