热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

直播带货系统中的推流技术详解

本文介绍了RTMP(实时消息传输协议)及其在直播带货系统中的应用,并详细探讨了带货直播系统的连麦方案,包括服务端合流和客户端合流的优势与劣势。

什么是RTMP?

RTMP(Real Time Messaging Protocol)是实时消息传输协议的缩写。该协议基于TCP,是一组协议的集合,包括基本的RTMP协议以及RTMPT、RTMPS和RTMPE等多种变体。RTMP主要用于在Flash/AIR平台和RTMP协议支持的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server、Ultrant Media Server和Red5等。RTMP与HTTP一样,属于TCP/IP四层模型的应用层。


RTMP传输协议

RTMP是由Adobe Systems开发的开放协议,用于在Flash播放器和服务器之间传输音频、视频和数据。它有多种变体:

1. RTMP工作在TCP之上,默认使用端口1935;

2. RTMPE在RTMP基础上增加了加密功能;

3. RTMPT封装在HTTP请求中,可以穿透防火墙;

4. RTMPS类似于RTMPT,增加了TLS/SSL的安全功能。

RTMP协议像一个容器,可以封装AMF格式的数据或FLV中的视/音频数据。一个单一的连接可以通过不同的通道传输多路网络流,这些通道中的数据包按固定大小传输。


带货直播系统的连麦方案

目前市场上带货直播系统的连麦方案主要有两种:CDN连麦和RTC连麦。以下是RTC连麦方案的详细介绍。

方案一:服务端合流

优势:

- 发热量低,电量损耗小;

- 在客户端网络不佳时,对直播的影响较小。

劣势:

- 成本高:云服务商按分钟计费;

- 延迟大:音视频流需经过服务端中转并进行合成转码再推流。

方案二:客户端合流

优势:

- 节省成本:无需支付旁路推流费用;

- 延迟小:主播端直接推流,减少传输过程中的延迟。

劣势:

- 手机发热量大:手机端直接推流,对性能有一定损耗;

- 在弱网环境下,影响直播效果,主播端需同时推送两路流,考验上行网络。


推流小助手

推流小助手采用客户端合流方案,虽然会导致手机发热量增加,但为了节省成本,这一点牺牲是可以接受的。


何时使用推流小助手?

- 音频连麦:带货直播系统音频连麦对设备性能消耗小,带宽占用低,能实现低延迟和低成本;

- 视频PK模式:两人进行直播连麦,对带宽和性能消耗较小,适合使用;

- 单主播模式:单主播模式客户端无需转码,直接推流,不损耗客户端性能;

- 多人连麦(超过2人):连麦人数超过2人时,建议连麦人数不超过6人,超过6人建议使用服务端旁路推流。


高效的省钱连麦方式

市场上大多数连麦方式采用服务端合流,这对RTC提供商非常有利。然而,随着RTC市场的竞争加剧,许多提供商开始通过增值服务增加收入,因此市场上较少见到客户端合流的方案。

在网络条件较差时,可以关闭本地推流,开启服务端旁路推流;在网络条件良好时,关闭服务端旁路推流,开启本地推流。


推流小助手功能介绍

推流方式:

- 视频直播,音频连麦方式;

- 视频直播,视频连麦方式;

- 音频直播,音频连麦方式;

- 视频直播,音频连麦/视频连麦可相互切换;

- 设置直播推流转码。


功能描述
用户视图布局自定义视图布局
背景颜色可自定义背景颜色
水印可在直播房间内添加水印(包括网站logo或名称和时间)
拓展信息-SEI直播:推流端将歌词/字幕分发到播放端,播放端实时绘制出歌词
音频采样率/声道/音频编码格式保证声音还原真实自然
视频分辨率/码率/帧率以及输出的视频编码格式保证视频流畅度和清晰度

CDN旁路推流

CDN(Content Delivery Network)是内容分发网络,旨在避免互联网上的传输瓶颈和不稳定环节,使内容传输更快、更稳定。其目标是让带货直播系统的用户能够就近获取所需内容,解决Internet网络拥堵问题,提高用户访问网站的响应速度。

简而言之,CDN利用遍布各省份和运营商的节点资源,优化跨运营商和跨区域的访问问题。在网络稳定的情况下,延迟时间可控制在80ms~100ms,几乎可以认为是同步的。

CDN的主要流程如下:

1. 主播开始直播,向调度服务器发送请求,调度服务器返回推流域名和sn;

2. 主播端采集音视频数据,发送给CDN节点,CDN节点进行处理;

3. 观众端要观看主播的视频,向调度服务器发送请求,返回拉流域名;

4. 观众端向CDN节点请求音视频数据。

带货直播系统对网络要求极高,任何问题都会导致卡顿、花屏或掉线。CDN通过负载均衡系统将内容推送到接近用户的边缘节点,显著提高了用户的访问速度和稳定性,非常符合直播的需求。


推荐阅读
  • 本文档详细介绍了服务器与应用系统迁移的策略与实施步骤。迁移不仅涉及数据的转移,还包括环境配置、应用兼容性测试等多个方面,旨在确保迁移过程的顺利进行及迁移后的系统稳定运行。 ... [详细]
  • 本文详细探讨了在Windows Server 2003环境下遇到MySQL连接失败(错误代码10061)的解决方案,包括通过卸载特定的Windows更新和调整系统注册表设置的方法。 ... [详细]
  • 在上一章【第三十九章:基于SpringBoot&Quartz完成定时任务分布式单节点持久化】中我们已经完成了任务的持久化,当我们创建一个任务时任务会被quartz定时任务框架自动持 ... [详细]
  • 本文介绍了如何在 Linux 系统上构建网络路由器,特别关注于使用 Zebra 软件实现动态路由功能。通过具体的案例,展示了如何配置 RIP 和 OSPF 协议,以及如何利用多路由器查看工具(MRLG)监控网络状态。 ... [详细]
  • ipvsadm命令简介:ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。在fedora14、Linux6.0之后系统中 ... [详细]
  • 本文详细探讨了当前主流的两种系统架构——C/S(客户端/服务器)与B/S(浏览器/服务器)架构的特点、优缺点及未来的发展趋势。 ... [详细]
  • 本文将详细介绍如何使用ViewPager实现多页面滑动切换,并探讨如何去掉其默认的左右切换动画效果。ViewPager是Android开发中常用的组件之一,用于实现屏幕间的内容切换。 ... [详细]
  • 本文介绍了Windows驱动开发的基础知识,包括WDF(Windows Driver Framework)和WDK(Windows Driver Kit)的概念及其重要特性,旨在帮助开发者更好地理解和利用这些工具来简化驱动开发过程。 ... [详细]
  • 本文详细介绍了Android平台上的动态加载技术,包括其定义、分类及具体实现步骤。通过动态加载技术,开发者可以在不更新应用的情况下,向用户推送新的功能或修复bug,从而提升用户体验。 ... [详细]
  • Linux环境下PostgreSQL的安装、配置及日常管理
    本文详细介绍了在Linux环境下安装、配置PostgreSQL数据库的过程,包括环境准备、安装步骤、配置数据库访问以及日常服务管理等方面的内容。适合初学者和有一定经验的数据库管理员参考。 ... [详细]
  • 本文介绍了几个有趣的Linux命令行工具,包括模拟蒸汽机车的sl命令、反转字符串的rev命令、显示随机名言的fortune命令等,不仅增添了命令行操作的乐趣,也展示了Linux系统的多样性和灵活性。 ... [详细]
  • 本文介绍了如何通过修改Android应用的配置文件和编写布局与Activity代码,利用DOM模式将用户输入的数据保存为XML文件。 ... [详细]
  • 使用 NDB 提升 Node.js 应用调试体验
    本文介绍了由 Google Chrome 实验室推出的新一代 Node.js 调试工具 NDB,旨在为开发者提供更加高效和便捷的调试解决方案。 ... [详细]
  • 每位开发者都应该拥有一个展示自我技能与分享知识的空间——个人技术博客。本文将指导你如何使用静态网站生成器Hexo结合GitHub Pages搭建这样一个平台。 ... [详细]
  • APP数据包捕获挑战
    本文探讨了在使用Burp Suite捕获移动应用数据包时遇到的两大难题,尤其是SSL Pinning安全机制的影响,并提供了一种解决方案。 ... [详细]
author-avatar
浪子一品香_938
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有