RTMP播放器全解析

news2024/9/27 20:14:47

一、RTMP 播放器概述

(一)RTMP 播放器的定义与作用

RTMP 播放器是一种专门用于播放采用 RTMP(Real Time Messaging Protocol)协议的视频流的工具。在当今的流媒体播放领域中,它扮演着至关重要的角色。RTMP 播放器能够实时接收、解码和播放来自服务器的音频、视频数据,为用户提供流畅的观看体验。

在直播场景中,RTMP 播放器能够实现低延迟播放,让观众与主持人之间的互动更加及时。例如,在会议类直播中,参会者可以通过文字聊天与主讲人互动,而 RTMP 播放器的低延迟特性能够确保观众的评论和主讲人的回应之间的时间差尽可能小。在视频会议中,RTMP 播放器可以保证参会人员之间的交流顺畅,减少因延迟带来的沟通障碍。对于监控领域,RTMP 播放器能够实时显示监控画面,帮助相关人员及时发现问题并采取措施。

二、常见 RTMP 播放器推荐

(一)FFMPEG

FFMPEG 是一套开源计算机程序,采用 LGPL 或 GPL 许可证。它包含非常先进的音频 / 视频编解码库 libavcodec,为保证高可移植性和编解码质量,很多 codec 都是从头开发的。支持的格式众多,如 ASF、AVI、BFI、IFF 等。在点播播放中,文件格式支持很全面,但维护成本很高。

(二)大牛直播 SDK

”大牛直播SDK”,始于2015年,致力于传统行业极致体验的音视频直播技术解决方案,产品涵盖跨平台的实时RTMP推流、RTMP/RTSP直播播放(支持RTSP|RTMP H.265,Enhanced RTMP H.265)、GB28181设备接入、推送端播放端实时录像、多路流媒体转发(RTSP转RTMP,RTMP转RTMP,RTSP|RTMP转GB28181)、音视频导播、动态视频合成、音频混音、一对一互动直播、内置轻量级RTSP服务、RTSP网关服务等,比快更快,业界真正稳定可靠的超低延迟直播SDK(毫秒级延迟,低延迟模式下150~300ms)。

(三)Vitamio

Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。能够流畅播放 720P 甚至 1080P 高清视频,跨平台支持 MMS、RTSP、RTMP、HLS 等多种视频流媒体协议。但貌似已不维护了。

(四)Potplayer 和 VLC

在 Windows 平台上,Potplayer 和 VLC 都是比较常见的播放器。Potplayer 功能强大,支持多种格式播放,但对部分 h265 编码的流媒体直播源支持不友好,可能只有声音而看不到画面。VLC 是自由、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件及各种流媒体协议,但功能相对单一,同样对部分 h265 编码直播源支持不佳。

三、RTMP 播放器的特点

(一)低延迟优势

RTMP 在低延时应用场景中具有重要地位。在互动式直播中,观众与主讲人的互动需要及时响应,RTMP 的低延迟特性(一般在3-5秒,像大牛直播SDK全自研内核框架的延迟可以做到150-300ms)使得这种互动更加流畅自然。相比之下,HTTP 流的延时一般在 10 秒以上,明显不适合互动式直播的需求。在视频会议中, RTMP 的低延迟仍能保证参会人员之间的交流更加顺畅,减少因延迟带来的沟通障碍。

(二)功能特性

以大牛直播SDK的RTMP播放器模块设计为例,功能设计如下:

如不单独说明,系Windows、Linux(含x86_64|aarch64)、Android、iOS全平台支持。

  •  [多实例播放]支持多实例播放;
  •  [事件回调]支持网络状态、buffer状态等回调;
  •  [视频格式]支持RTMP扩展H.265和Enhanced RTMP H.265,H.264;
  •  [音频格式]支持AAC/PCMA/PCMU/Speex;
  •  [H.264/H.265软解码]支持H.264/H.265软解;
  •  [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
  •  [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
  •  [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
  •  [缓冲时间设置]支持buffer time设置;
  •  [首屏秒开]支持首屏秒开模式;
  •  [低延迟模式]支持低延迟模式设置(公网200~400ms);
  •  [复杂网络处理]支持断网重连等各种网络环境自动适配;
  •  [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
  •  [音视频多种render机制]Android平台,视频:SurfaceView/GLSurfaceView,音频:AudioTrack/OpenSL ES;
  •  [实时静音]支持播放过程中,实时静音/取消静音;
  •  [实时音量调节]支持播放过程中实时调节音量;
  •  [实时快照]支持播放过程中截取当前播放画面;
  •  [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
  •  [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
  •  [渲染镜像]支持水平反转、垂直反转模式设置;
  •  [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
  •  [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
  •  [ARGB叠加]Windows平台支持ARGB图像叠加到显示视频(参看C++的DEMO);
  •  [解码前视频数据回调]支持H.264/H.265数据回调;
  •  [解码后视频数据回调]支持解码后YUV/RGB数据回调;
  •  [解码后视频数据缩放回调]Windows平台支持指定回调图像大小的接口(可以对原视图像缩放后再回调到上层);
  •  [解码前音频数据回调]支持AAC/PCMA/PCMU/SPEEX数据回调;
  •  [音视频自适应]支持播放过程中,音视频信息改变后自适应;
  •  [扩展录像功能]完美支持和录像SDK组合使用。

(三)GOP-Cache 和累积延迟

GOP(Group of Pictures)即视频流中两个 I 帧的时间距离。Flash(解码器)只有拿到 GOP 才能开始解码播放。服务器一般先给一个 I 帧给 Flash。假设 GOP 是 10 秒,即每隔 10 秒才有关键帧,如果用户在第 5 秒时开始播放,会有两种方案。第一种方案是等待下一个 I 帧,再等 5 秒才开始给客户端数据,这样延迟低,但会黑屏等待。第二种方案是马上播放前一个 I 帧,这样可以快速启动,但延迟会增大。

累积延迟是 RTMP 的一个问题。因为 RTMP 基于 TCP 不会丢包,当网络状态差时,服务器会将包缓存起来,导致累积的延迟。处理累积延迟的方法有多种。例如,客户端检测到缓冲区有很多数据时,可以重连服务器。此外,还可以通过调整服务器的直播队列长度、编码器调低 GOP 等方法来降低延迟。例如,编码器调低 GOP 到 0.5 秒一个 GOP,这样延迟也很低,也不用等待,但编码器压缩率会降低,图像质量没有那么好。

四、如何使用 RTMP 播放器

以大牛直播SDK的Windows端RTMP播放器集成为例,上图是大牛直播SDK的Android端启动RTSP服务和推送RTMP流,然后Windows端分别播放RTSP和RTMP流的延迟情况(右侧是RTMP流)。

  1. demo 说明
    • 提供 C++/C# 两套接口,对外提供 32/64 位 debug/release 库,C++ 和 C# 接口一一对应,C# 接口比 C++ 接口增加前缀 NT_PB_。
    • 播放端 SDK 支持 Win7 及以上系统,本 demo 基于 VS2013 开发。
    • 展示了界面 UI,包括链接状态、下载速度、缓冲状态等信息。
  2. 集成说明
    • C++ 头文件和 C# 头文件的相关定义。
    • 集成步骤包括拷贝库文件、设置授权、添加头文件等。
    • 正式授权版需要在 Init () 接口调用之前添加设置 license 的代码。
  3. 接口调用时序(以 C# 为例)
    • 设置授权 license。
    • 设置日志存放路径。
    • 初始化 SDK。
    • 特定机型硬解码检测,可检测系统是否支持硬解,如需使用硬解码可调用相关接口。
    • Open 生成播放实例,每调用一次 Open 接口对应一个播放实例。
    • 设置回调事件,包括网络链接状态、buffer 状态、实时带宽等回调,以及视频分辨率回调、YUV/RGB32 数据回调等。
    • D3DRender 检测,检测系统是否支持 D3D 绘制,对于不支持的情况可设置回调 YUV 数据,用 GDI 模式绘制,但 GDI 绘制效率偏低。
    • 设置播放 URL,支持 rtsp/rtmp/ 本地 FLV 文件。
    • 设置回调 PCM。
    • RTMP/RTSP 播放参数设置,包括设置缓冲大小、RTSP TCP 模式、超时时间、自动切换 TCP/UDP、秒开、低延时模式、下载速度上报等。
    • 开始播放 RTMP 或 RTSP 流数据。
    • RTMP/RTSP 拉流端录像,包括设置录像目录、单个文件最大大小、文件名生成规则、录像回调接口、音频转 AAC 编码开关、是否录视频和音频等,并可启动和停止录像。
    • 实时快照,用于播放端实时截取当前播放图片,图片以 PNG 形式保存至本地。
    • 快速切换 URL,用于实时切换播放的 URL。
    • 用户数据回调和 SEI 数据回调,如不需要处理相关数据,此接口无需调用。
    • 停止播放和关闭播放实例。
    • Uninit,是 SDK 最后一个调用的接口,多实例环境下只需要调用一次。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2170919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

找不到d3dx9_43.dll怎么办,d3dx9_43.dll丢失的多种解决方法

在现代计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“找不到d3dx9_43.dll,无法继续执行代码”。这个错误提示通常出现在运行某些游戏或应用程序时,它会导致程序无法正常运行。本文将针对这个问题进行原因分析,并提供…

Ubuntu18升级cmake和python

Ubuntu18升级cmake和python 1、升级cmake至3.22.12、升级python至3.82.1 安装依赖包2.2 添加deadsnakes PPA源2.3 安装python3.82.4 将python各版本添加到update-alternatives2.5 配置python3默认指向python3.82.6 测试python3版本2.7 配置python默认指向python32.8 测试python…

《面向对象是怎样工作的》笔记

6、1、在面向对象的世界中,我们需要事先为所有的行动准备好方法并通过消息传递来调用方法,这样事物才会开始运作。 2、实际上,类、继承和多态应该被明确定义为能提高软件的可维护性和可重用行的结构。类将变量和子程序汇总在一起&#xff0c…

叉车高位显示器无线摄影,安装更加便捷!

叉车叉货,基本功能,但货叉升降高度确不一定,普通的3米左右,高的十几米,特别是仓储车,仓库叉货空间小,环境昏暗,视线受阻严重,司机叉货升的那么高怎么准确无误的插到货呢&…

尊享免费博导实验指导、结果解读、一站式实验服务与论文润色,助力科研人员成就卓越

🌟 教授团队领衔,全方位服务! 🚀 从实验设计到论文发表,一站式解决方案! 📈 选择我们,加速您的科研进程,让成果不再等待! 📝 专业分析 定制服…

C高级(Day21)

一、学习内容 shell指令 学习回顾 mkdir 创建目录 cd 切换目录 cd \ cd . \ cd .. touch 、 vim 创建文件 rm 删除文件 rm -r 删除文件/删除目录 rmdir 只能删除空目录 cp 复制文件 mv 移动、重命名、剪切 cat 显示文件内容 ls 查看目录下的所有文件 ls -a 、ls -l pw…

kali的tplmap使用报错解决

问题 当我们直接使用kali下的tplmap时报错了。 Tplmap 0.5 Automatic Server-Side Template Injection Detection and Exploitation Tool Testing if GET parameter name is injectable Exiting: module collections has no attribute Mapping 这是因为tplmap要求的版本…

USB 3.1 标准 A 型到 USB 3.1 标准 A 型或 B 型的电缆组件

电线分配 下表定义了电线编号和电线的信号分配: Unshielded twist pair:非屏蔽双绞线Shielded differential pair:屏蔽差分对Braid:编织层Cable external braid to be 360 terminated on to plug metal shell:电缆外部…

文笔差只因没找对工具,这5个AI帮你变身写作高手!

在详细评估了超过二十种AI写作辅助应用后,我挑选了四款特别出色的工具来向您介绍。这些工具不仅能显著提高您的写作速度,而且在特定用途下能够创造出优秀的内容,从而避免了一些常见的AI写作缺陷。 通常情况下,对AI生成内容感到不…

8--苍穹外卖-SpringBoot项目中套餐管理 详解(二)

目录 删除套餐 需求分析和设计 代码开发 根据id查询套餐 mapper层 Service层 ServiceImpl层 Mapper层 批量删除套餐 mapper层 Service层 ServiceImpl层 Mapper层 SetmealMapper.xml 修改套餐 需求分析和设计 代码开发 起售停售套餐 需求分析和设计 代码开发…

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌!

【智享AI直播官网】—智享AI直播源码部署—OEM贴牌! 在当今数字化浪潮的推动下,直播行业正以前所未有的速度蓬勃发展,而AI(人工智能)技术的融入更是为这一领域注入了新的活力与无限可能。【智享AI直播官网】作为行业内…

gMLP:Pay Attention to MLPs--模型代码讲解

gMLP模型代码讲解 IntroductiongMLP网络结构Spatial Gating Unit (SGU) codegMLPBlockSpatial Gating Unit 基于MLP-Mixer 的改进… Introduction 总的来说,gMLP 在视觉和NLP领域的惊人有效性表明,自我注意并不是扩大机器学习模型的必要因素&#xff0c…

基于STM32的DHT11功能实现(操作时序)

1.引脚定义 Pin名称注释1VDD供电 3-5.5V2GND接地,电源负极3DATA串行数据,单总线4NC空脚,请悬空 2.数据格式 DHT11 采用单总线协议与单片机通信,单片机发送一次复位信号后,DHT11 从低功耗模式转换到高速模式&#xff…

新品:新一代全双工音频对讲模块SA618F22-C1

SA618F22-C1是我司一款升级版的无线数字和音频二合一全双工传输模块,支持8路并发高音质通话。用户不仅可以通过串口实现数据的无线传输,还可以通过I2S数字音频或模拟音频接口来传输语音信号。该模块内置高速微控制器、回声消除电路、ESD静电防护、高性能…

全国自闭症学校全寄宿制:为特殊儿童提供专业教育护理

在全国范围内,随着对自闭症儿童教育需求的日益增长,全寄宿制自闭症学校逐渐成为了一种重要的教育模式。这些学校以其专业的教育团队、全面的生活护理以及个性化的教学方案,为自闭症儿童提供了一个安全、稳定、充满爱的成长环境。在广州&#…

走进灯塔工厂,腾讯云携手业界专家共筑AI智造未来

现在,我国工业正处于从数字化向智能化转型的关键阶段,而人工智能、云计算和大数据等前沿技术正成为推动这进程的核心力量。以大模型为例,大模型通过高效处理和分析海量数据,帮助企业挖掘出有价值的规律和趋势,有效拓展…

使用双向链表和哈希表实现LRU缓存

在日常开发中,缓存 是一个非常常见且重要的技术手段,能够显著提升系统性能。为了保证缓存的有效性,需要实现一种机制,在缓存空间不足时,能够自动淘汰最久未被使用的数据。这种机制就是**LRU(Least Recently…

CSS文本格式化

通过 CSS 中的文本属性您可以像操作 Word 文档那样定义网页中文本的字符间距、对齐方式、缩进等等,CSS 中常用的文本属性如下所示: text-align:设置文本的水平对齐方式;text-decoration:设置文本的装饰;te…

面试题-部分

目录 1. 从输入url到渲染页面,中间经历了什么? 2. vue中的v-if和v-show有什么区别 3. 什么是Css中的回流(重排)与重绘 4. 介绍一下let、const、var的区别 5. 箭头函数和普通函数有什么区别 6. Css中常用的水平垂直居中解决方…

传输大咖49 | 科学研究院跨网文件交换高效、安全解决方案

在科学研究领域,数据的价值堪比黄金。科学研究所的日常运作依赖于大量的数据交换,高效的文件交换系统离不开内部合作和与外部合作伙伴的交流。然而,随着数据量的激增和网络环境的复杂性,传统的文件交换方法很难满足需求。本文将讨…