[2015~2024]SmartMediaKit音视频直播技术演进之路
技术背景
2015年,因应急指挥项目需求,我们实现了RTMP推送音视频采集推送(采集摄像头和麦克风数据)模块,在我们做好了RTMP推送模块后,苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器,于是第一款低延迟的RTMP播放器,就这么诞生了。
随着时间的推进,大牛直播SDK(SmartMediaKit)已经成为音视频高稳定、低延迟的代名词,涵盖跨平台(Windows、Linux(x64_64架构|aarch64)、Android、iOS)的实时RTMP推流、RTMP/RTSP直播播放(支持RTSP|RTMP H.265,Enhanced RTMP H.265)、GB28181设备接入、推送端播放端实时录像、多路流媒体转发(RTSP转RTMP,RTMP转RTMP,RTSP|RTMP转GB28181)、音视频导播、动态视频合成、音频混音、一对一互动直播、内置轻量级RTSP服务、RTSP网关服务等,已然成为业内为数不多的比快更快,真正稳定可靠的超低延迟直播SDK(毫秒级延迟,低延迟模式下150~300ms)。
低延迟的音视频直播技术解决方案适用于在线教育、智慧教室|无纸化推屏|会议、运营商视频云平台、执法记录、电力巡检、智慧水利、智慧煤矿、管廊隧道、平衡操控、虚拟仿真实训教学、VR教育、云展会、金融双录、远程医疗、智能可视门禁对讲、智慧安防、智能家居、物联网、智能车载、传统硬件领域、媒体移动直播、应急指挥调度(针对保险、城管、交警、消防、公安等职能管理部门的单兵应急执法系统)、远程专家诊断、可视化巡检、(如电信/电力线路/铁路沿线/水利设施/油田/消防设施巡检)、移动视频安防监控,企业内训、监控对接等场景。
技术特点
大牛直播SDK是一套功能强大的跨平台流媒体内核组件,具有以下特点和优势:
功能丰富:
- 多种数据采集与推送:支持多摄像头、屏幕、麦克风等数据采集与推送功能。可以选择摄像头列表、设置摄像头的分辨率和帧率等参数;对于屏幕采集,支持屏幕裁剪,可根据帧率和推送分辨率自动推荐码流,并且默认帧率可调整。还支持外部 H.264 接口输入等扩展数据采集方式。
- 灵活的合成与叠加:支持摄像头和屏幕的多种合成与叠加模式,如摄像头叠加到屏幕、屏幕叠加到摄像头等,并支持实时关闭叠加层。此外,还能设置实时水印,包括文字水印、实时时间水印和图片水印,以及设置透明度处理(遮盖)等功能。
- 音频处理全面:支持扬声器和麦克风音频混音输出,可采集电脑输出的音频或麦克风音频。在音频编码方面,默认是 AAC 编码模式,如需码率更低,也可选择 SPEEX 编码模式。同时具备音频 “端点检测(VAD)”、回音消除、噪音抑制、自动增益控制等音频处理功能。
- 推送与播放功能多样:支持多种音视频格式的推送,如 H.264、AAC、Speex、PCMA、PCMU 等。在播放方面,支持 RTMP、RTSP 直播播放,提供软解码、硬解码设置,具有实时静音、快照、view 旋转、秒开等功能,还支持多实例播放以及网络状态和 buffer 状态等回调。
- 录像与文件处理:支持 RTMP、RTSP 流录制,音频转 AAC 后录制,以及只录制音频或视频等模式,并且文件可自动切分。支持设置录像文件前缀、录像文件大小、录像文件是否增加日期和时间等。
- 内置服务与设备接入:具有内置轻量级 RTSP 服务,支持对外提供 RTSP 服务,可同时开启多个 service,提供小规模并发访问;还支持 GB28181 设备接入,可实现不具备国标音视频能力的 Android 终端通过平台注册接入到现有的 GB/T28181 服务。
技术优势明显:
- 低延迟:能够将播放延迟稳定地控制在较低水平,在低延迟模式下可达到 150 - 300ms,这对于对实时性要求较高的直播、互动等场景非常重要,能够显著提升用户体验。
- 高稳定性:可以长时间稳定运行,减少因播放器故障导致的直播中断等问题,适用于需要长时间持续运行的应用场景。
- 全自研框架与模块化设计:采用全自研框架,具备高度可扩展性与自适应算法,资源占用低,灵活性强。开发者可以根据自己的需求选择功能模块进行组合使用。
- 多平台支持:支持 Windows、Linux、Android、iOS 等多个平台,满足不同设备和应用场景的需求。
应用场景广泛:
- 在线教育:教师可通过该 SDK 进行实时授课,支持屏幕共享、文档展示、PPT 讲解等功能,实现远程协作和讨论,还可用于教学视频的实时录制、回放和分享。
- 智慧安防:用于城市监控、企业安防、智能家居等场景的实时视频流传输和录制,为应急指挥调度工作提供低延迟、高稳定性的直播服务。
- 媒体直播:适用于新闻直播、体育赛事直播、娱乐直播等移动直播场景,以及演唱会、发布会、展览等活动的现场直播,支持远程观众与现场活动的实时互动。
- 远程医疗:医生可进行远程会诊,与异地专家进行实时视频交流和病例讨论,还支持手术过程的实时直播和录制,为医学教育和手术观摩提供便捷途径。
- 其他行业:如可视化购物、远程专家诊断、可视化巡检等场景也能得到很好的应用。
近十年的技术积累,让大牛直播SDK凭借其丰富的功能、优秀的技术优势和广泛的应用场景,为开发者提供了强大的流媒体解决方案,在直播、安防、教育、医疗等多个领域具有较高的应用价值。
我们始终相信:Faster than “Fastest”,Smarter than “Smartest”,Stabler than “Stablest”。
厚积薄发,登上山顶,不是为了饱览风光,是为了寻找更高的山峰,从敬畏到颠覆,以匠人之心,专注、极致、智慧,志在成为业内为数不多真正稳定可靠的流媒体技术方案缔造者。
相关文章:
[2015~2024]SmartMediaKit音视频直播技术演进之路
技术背景 2015年,因应急指挥项目需求,我们实现了RTMP推送音视频采集推送(采集摄像头和麦克风数据)模块,在我们做好了RTMP推送模块后,苦于没有一个满足我们毫秒级延迟诉求的RTMP播放器,于是第一…...
图片添加水印的实验原理,实验代码,实验现象
一、图片添加水印的实验原理 1. 选择水印类型 可见水印:这些水印可以直接被肉眼看到,通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式,并且放置在图像的显著位置。不可见水印:这类水印不容易被察觉,但…...
Python Web 开发案例解析
一、Flask 基础应用案例 (一)项目搭建与初始化 环境准备 安装 Python 解释器,确保版本符合 Flask 要求,如 Python 3.6 及以上。使用pip安装 Flask 库,命令为pip install flask。可以创建虚拟环境,如python…...
JPG 转 PDF:免费好用的在线图片转 PDF 工具
JPG 转 PDF:免费好用的在线图片转 PDF 工具 在日常工作和生活中,我们经常需要将图片转换为 PDF 格式。无论是制作电子文档、准备演示材料,还是整理照片集,将图片转换为 PDF 都是一个常见的需求。今天为大家介绍一款完全免费、无需…...
代码随想录44天
1143.最长公共子序列 class Solution:def longestCommonSubsequence(self, s: str, t: str) -> int:n, m len(s), len(t)cache # 缓存装饰器,避免重复计算 dfs 的结果(记忆化)def dfs(i: int, j: int) -> int:if i < 0 or j <…...
C语言-详细解答-重组字符串并16进制转10进制
1.题目要求 2.代码实现 #include <stdio.h> #include <ctype.h> #include <string.h>int hexToDec(char hex[]) {int len strlen(hex);int base 1;int dec 0;for (int i len - 1; i > 0; i--) {if (isdigit(hex[i])) {dec (hex[i] - 0) * base;} e…...
scala列表
1 不可变 List 说明 (1)List 默认为不可变集合 (2)创建一个 List(数据有顺序,可重复) (3)遍历 List (4)List 增加数据 (5&#…...
医疗急救技能大赛理论题库
医疗急救技能大赛理论题库 题型包括:A1 型题 400题,A2 型题40题,A3/A4 型40 题, B 型题 80 题 ,X 型题 160 题,判断题 80 题。 一、A1 型题:共计400 题 (即最佳回答题,它由一个叙…...
深入浅出WebRTC—ULPFEC
FEC 通过在发送端添加额外的冗余信息,使接收端即使在部分数据包丢失的情况下也能恢复原始数据,从而减轻网络丢包的影响。在 WebRTC 中,FEC 主要有两种实现方式:ULPFEC 和 FlexFEC,FlexFEC 是 ULPFEC 的扩展和升级&…...
SQL 在线格式化 - 加菲工具
SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql,点击上方的格式化按钮即可 输入框得到格式化后的sql结果...
到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率
中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率 服务率和到达率 中心可以根据任务到达率的变化动态调整服务器的服务率,实现负载均衡,提高资源利用效率服务率(Service Rate)到达率(Arrival Rate)控制参数实现负载均衡的方法在云计…...
【Golang】Go语言编程思想(六):Channel,第四节,Select
使用 Select 如果此时我们有多个 channel,我们想从多个 channel 接收数据,谁来的快先输出谁,此时应该怎么做呢?答案是使用 select: package mainimport "fmt"func main() {var c1, c2 chan int // c1 and …...
认证插件介绍
本文档是针对 UOS 登录器插件给出开发指南,目的是为了让开发人员了解如何在 UOS 登录器上增加一种自定义认证方式,对插件接口做了详细说明以及实战练习。 文章目录 一、认证插件可以做什么?二、认证流程三、术语说明四、安全性五、可靠性六、…...
MindSearch深度解析实践
1. 课程内容 1.1 MindSearch 简介 MindSearch 是一个开源的 AI 搜索引擎框架,具有与 Perplexity.ai Pro 相同的性能。我们可以轻松部署它来构建自己的专属搜索引擎,可以基于闭源的LLM(如GPT、Claude系列),也可以使用…...
[oeasy]python052_[系统开发语言为什么默认是c语言
[系统开发语言为什么默认是c语言 [趣味拓展]c语言发祥史_c是如何成为第一系统语言的 上次我们了解了 标识符 要求 首字符 为 字母和下划线 后面字符 为 字母和下划线 外加 数字 添加图片注释,不超过 140 字(可选) 使用isidentifier函数 可…...
【java常用算法和应用场景】
java常用算法和应用场景 Java中常用的算法涵盖多个领域,包括排序算法、查找算法、字符串匹配算法、图论算法、动态规划算法、贪心算法、分治算法等。以下是Java中一些常用算法及其应用场景和示例代码: 一、排序算法 排序算法是计算机科学中的一种基本…...
D96【python 接口自动化学习】- pytest进阶之fixture用法
day96 pytest的fixture详解(三) 学习日期:20241211 学习目标:pytest基础用法 -- pytest的fixture详解(三) 学习笔记: fixture(scop"class") (scop"class") 每一个类调…...
知从科技总经理受邀参加上海临港新片区商会“湖畔TECS”技术分享沙龙(第五期)
11月26日,上海知从科技有限公司创始人陈荣波先生受邀出席临港新片区商会 “湖畔TECS”技术分享沙龙(第五期)活动,并在活动上为参会嘉宾们做了主题分享。本次活动由临港新片区商会主办,智能网联汽车创新联盟协办&#x…...
scala的泛型应用场景
用代码表示泛型类://泛型:类型参数化 //Pair约定一对数据 class Pair[T](var x:T,var y:T) //class 类名(成员名:数据类型)--->class 类名[泛型名](成员名:泛型名)/.参考代码&…...
三种策略改进的沙猫群优化算法(MSCSO)
三种策略改进的沙猫群优化算法(MSCSO) 目录 三种策略改进的沙猫群优化算法(MSCSO)效果一览基本介绍程序设计参考资料效果一览 基本介绍 改进点: 三角形游走策略Levy飞行游走策略透镜成像反向学习SCSO是 2022年提出的元启发式优化算法,该算法灵感来源于沙猫的捕食行为,沙猫群…...
Google Cloud Database Option(数据库选项说明)
关系数据库 在关系数据库中,信息存储在表、行和列中,这通常最适合结构化数据。因此,它们用于数据结构不经常更改的应用程序。与大多数关系数据库交互时使用 SQL(结构化查询语言)。它们为数据提供 ACID 一致性模式&am…...
java抽奖系统登录下(四)
6.4 关于登录 最简单的登录: 1、web登录页填写登录信息,前端发送登录信息到后端; 2、后端接受登录信息,并校验。校验成功,返回成功结果。 这种登录会出现一个问题,用户1成功登录之后,获取到后台…...
Linux入门攻坚——41、Linux集群系统入门-lvs(2)
lvs-dr:GATEWAY Director只负责请求报文,响应报文不经过Director,直接由RS返回给Client。 lvs-dr的报文路线如上图,基本思路就是报文不会回送Director,第①种情况是VIP、DIP、RIP位于同一个网段,这样&…...
Android Freezer
Freezer原理 Android按照优先级将一般的APP从高到低分为: 前台进程 --> 可感知进程–> 服务进程 --> Cached进程。 Freezer通过冻住cached进程,来迫使这些进程让出CPU,以达到优化系统资源使用的目的。 Cached进程是怎么判定的呢? 由于andro…...
GeeCache-单体并发缓存
实现LRU中value接口的缓存类 使用互斥锁封装LRU缓存类,实现并发访问 实现Group组,用名称对缓存分类 Getter为缓存击穿时调用的回调函数 若缓存击穿则调用回调函数,并把读取到的值加载到缓存中...
ctfshow-web 151-170-文件上传
151. 我们首先想到就是上传一句话木马。但是看源代码限制了png。 (1)改前端代码。 这里是前端限制了上传文件类型,那我们就改一下就好了嘛,改成php。 这里直接修改不行,给大家推荐一篇简短文章,大家就会了(…...
汽车车牌标记支持YOLO,COCO,VOC三种格式标记,4000张图片的数据集
本数据集支持YOLO,COCO,VOC三种格式标记汽车车牌,无论是新能源汽车还是油车都能识别标记,该数据集一共包含4000张图片 数据集分割 4000总图像数 训练组 70% 2800图片 有效集 20% 800图片 测…...
解决VSCode无法识别相对路径的问题
前言: 近日在学习python文件操作时,发现使用VSCode作为编辑器时,文件的相对路径会出问题,报错“指定路径下找不到文件”,无法找到想要的文件。 知识点①:不同操作系统所使用的路径斜杠不同:Lin…...
OCR 技术在验证码识别中的应用
OCR 技术在验证码识别中的应用 一、验证码识别的背景与挑战二、OCR 技术简介三、验证码识别的环境搭建四、使用 OCR 进行验证码识别的方法五、DdddOcr 子项在验证码识别中的应用六、验证码识别的应用场景与注意事项七、总结 在当今数字化时代,验证码作为一种安全验证…...
恶补英语初级第21天,《讨论天气变化》
对话 What’s the weather like in spring? It’s often windy in March. It’s always warm in April and May, but it rains sometimes. What’s it like in summer? It’s always hot in June, July and August. The sun shines every day. Is it cold or warm in autumn?…...
牛客网刷题SQL--高级查询
目录 SQL16--查找GPA最高值 描述 示例1 答案 其他方法: SQL17--计算男生人数以及平均GPA 描述 示例1 答案 SQL18--分组计算练习题 描述 示例1 答案 SQL19--分组过滤练习题 描述 示例1 答案 SQL20--分组排序练习题 描述 示例1 答案 SQL16--查找GP…...
用ffmpeg将MP4视频转换为m3u8格式
原文网址:用ffmpeg将MP4视频转换为m3u8格式_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍如何使用ffmpeg将MP4视频转换为m3u8格式。 什么是m3u8 M3U8视频格式是一种M3U,只是它的编码格式是UTF-8格式。M3U用Latin-1字符集编码。M3U8格式特点是带有…...
【Qt】qt基础
目录 一、使用Qt Creator创建qt项目 二、项目文件解析 三、Qt中创建图形化界面的程序的两种方法 四、对象树 一、使用Qt Creator创建qt项目 1.选择项目模板 选中第一类模板Application(Qt应用程序,包含普通窗体程序和QtQuick程序), 然后选中右侧的第…...
VLC还是SmartPlayer?Windows平台RTSP播放器低延迟探讨
技术背景 好多开发者在用过大牛直播SDK的RTSP播放器后,都希望我们也分享下,如何在Windows平台实现低延迟的RTSP播放?低延迟的RTSP播放器,说起来容易做起来难,下面,我们从以下维度做个探讨: 播…...
极验决策引擎如何凭借独特优势,弯道超车传统风控?
前言 市场上的规则决策引擎产品众多,但大多局限于IP、设备、账号等层面,提供的是现成的风控标签和规则。然而,真正的风控,需要的不仅仅是标签和规则。 极验的业务规则决策引擎与众不同,这款决策引擎以界面流程编排为…...
Spring Boot集成Knife4j文档工具
Knife4j 搭建 Knife4j环境的的搭建和Swagger一样都比较简单,只需要极简的配置即可。 maven依赖 我使用的是较高版本的基于openapi规范的依赖包,OpenAPI2(Swagger)规范是Knife4j之前一直提供支持的版本,底层依赖框架为Springfox。 此次在4…...
html|本地实现浏览器m3u8播放器,告别网络视频卡顿
前言 网络上经常是以m3u8文件传输视频流的 ,但是有时网络慢往往导致视频播放卡顿。于是我在想能不能先下载然后再播放呢?于是尝试下载然后实现本地播放m3u8视频。 正文 1.找到网络视频流的m3u8连接 一般在浏览器按F12就可以看到有请求视频流的连接。 …...
vue3监听横向滚动条的位置;鼠标滚轮滑动控制滚动条滚动;监听滚动条到顶端
1.横向取值scrollLeft 竖向取值scrollTop 2.可以监听到最左最右侧 3.鼠标滚轮滑动控制滚动条滚动 效果 <template><div><div class"scrollable" ref"scrollableRef"><!-- 内容 --><div style"width: 2000px; height: 100…...
JSON
文章目录 一、概念1.json官网2.json的概念3.序列化方案:xml、json 二、json的数据类型1.json的键:必须是带双引号的字符串2.json的值:6种数据类型(1)对象 { }(2)数组 [ ] 三、Python中的json1.序列化:Python对象 转 json2.反序列化…...
前端常用的方法
时间处理 moment时间处理函数 // 时间日期相关常用的方法变量 import moment from moment;// 获取当前时间 moment export const nowDateMoment moment(new Date()); export const nowDateY moment(new Date()).format(YYYY); export const nowDateM moment(new Date()).f…...
JavaScript 对话框的魔法与艺术
在Web开发的世界里,JavaScript 对话框是用户与网页互动的重要桥梁。它们不仅能够提供即时反馈,还能收集用户的输入信息,从而增强用户体验。本文将深入探讨JavaScript对话框的各种类型、用法及其背后的原理,并通过丰富的实例展示如…...
java+springboot+mysql私人会所管理系统
项目介绍: 使用javaspringbootmysql开发的私人会所管理系统,系统包含管理员、技师、用户角色,功能如下: 管理员:用户管理;服务项目;技师管理;房间管理;预约管理&#x…...
Scrapy 爬虫框架全解析
一、Scrapy 框架概述 基本定义 Scrapy 是一个用 Python 编写的开源网络爬虫框架。它旨在快速、高效地抓取网页数据,可处理大规模的数据抓取任务。基于 Twisted 异步网络库构建,能够并发地处理多个请求,大大提高了数据抓取的速度。遵循 “请求…...
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000
Hive3.X——异常处理Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000 01 前言 大数据系列,学到了Hive,搭建环境的时候,因为使用的是本机WSL2(别问为啥不用VMware,问就是条件有限,而且WS…...
【跨库查询、多库查询】.NET开源 ORM 框架 SqlSugar 系列
文章目录 一、跨库方式1:跨库导航二、手动跨库查询三、同服务器:自动查询跨库查询3.1 Mysql和SqlServer自动3.2 自动: PgSql跨Scheme查询3.3 其他库同服务器 四、跨服务器:自动跨库查询4.1 配置SqlServer dblink4.2 配置 Oracle dblink4.3 配…...
【JAVA】Java项目实战—Java 数据库应用项目:学生信息管理系统
本项目将实现一个简单的学生信息管理系统,功能包括学生信息的录入、查询、修改和删除。通过本项目,读者将深入理解Java与数据库交互的基本原理,掌握JDBC(Java Database Connectivity)技术,以及如何构建一个…...
中电金信携手中远海科,共启贸易金融数智新篇章
在数智化转型成为驱动经济社会高质量发展的新引擎背景下,“数智方案”栏目聚焦金融等国计民生重点行业场景,依托中电金信“源启筑基咨询引领应用重构”的产品及服务体系,输出市场洞察和行业解决方案、应用案例,旨在全面推动行业IT…...
有没有办法让爬虫更加高效,比如多线程处理?
要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...
Android历史版本主要更新说明
Android 15 Android 15 继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。 Android…...
测试岗位应该学什么
以下是测试岗位需要学习的一些关键内容: 1. 测试理论和方法 - 了解不同类型的测试,如功能测试、性能测试、压力测试、安全测试、兼容性测试等。 - 掌握测试策略和测试计划的制定。 2. 编程语言 - 至少熟悉一种编程语言,如 Python、Java…...