c++高性能264/265实时流媒体服务器/h5客户端整体解决方案源码

news2024/11/24 17:30:01

文章目录

  • c++高性能264/265实时流媒体服务器/h5客户端整体解决方案源码
    • 缘由
    • 目前的前端技术栈,已经能够支撑常规的安防桌面客户端软件开发
    • 我的方案
    • 一套c++后端,两套前端
      • H5 UI方案一:多屏h265/h264混合显示
      • H5 UI方案二:H5监控大屏,提供视图切换功能
    • 优点
    • 总结

c++高性能264/265实时流媒体服务器/h5客户端整体解决方案源码

缘由

长期以来chrome一直致力于推广自己的vp9解码,而不支持h265, 而互联网上有大量的h265视频,事实上,安防行业自2019年就有大量的h265产品了,推动的理由很简单:更高的编码复杂度,同样的清晰度有着更低的码率,这样可以大幅度降低存储成本。

在此之前,chrome支持fmp4流媒体播放h264但不支持h265。这就催生了大量临时方案

  • wasm方案的h265解码器,他们不辞辛苦的将ffmpeg编译成wasm,然后利用js调用cpu来解码h265视频。这样的方案依赖CPU软解,能用但性能不足,典型情况下,在普通PC机上只能够播放一路1080p的h265视频

  • 修改chrome源码,重新编译ffmpeg,使其支持265解码,这个效果比wasm更好,也有可能做到一定程度的GPU硬件加速,但硬件适配远没有chrome做的更好,毕竟chrome面临的是这个世界上绝大多数的桌面端、移动端设备。

目前的前端技术栈,已经能够支撑常规的安防桌面客户端软件开发

前端的优势:

  • 绝佳的UI表现能力;
  • 面向新需求快速开发的能力;
  • 前后端分开,容易搭建团队的能力;
    可以说上面的几个优点,招招都踢在传统桌面客户端的要害上。

我的方案

主要分为两块,

  • 后端流媒体服务
  • 两个前端UI
    整体逻辑如下:
    整体逻辑示意图

一套c++后端,两套前端

H5 UI方案一:多屏h265/h264混合显示

主要逻辑:前端查询后端可用的流列表,流式布局显示,点击播放
后端提供多个测试文件,前端就会展示相应的个数,快速帮助使用者摸清播放性能边界。

打开后查询对应的流个数
初始页面
本例中,后端提供5路流,点击播放后
播放页面
图中附上任务管理器截图,可以看到CPU和GPU使用量

H5 UI方案二:H5监控大屏,提供视图切换功能

multi_preview_standby
multi_preview_play
此方案值得一提的是:

  • 提供1分屏、4分屏、8分屏、9分屏、16分屏、32分屏、64分屏切换;
  • 分屏切换不会停止播放;

优点

  • GPU解码,无插件,chrome网页播放32路 h256/hevc 直播视频流,毫无压力;

  • 纯c++编写,可以运行在绝大多数嵌入式、x86环境下, 只要c++版本不低于14;

  • 基于h5原始“video”标签,方便集成到自己的前端项目中;

  • 白盒交付,提供前后端全部源码;

总结

前端视频应用的机会已经到来,小公司可以掌握更多的机会,用前端开发去替代原先的qt等传统UI开发框架,用新技术撬动原本只属于大公司的机会。

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

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

相关文章

基于SRS后端开发的前端页面

SRS(Simple Realtime Server)是简单高效的实时视频服务器,支持RTMP、WebRTC、HLS、HTTP-FLV、SRT等多种实时流媒体协议。 框架 https://www.thinkphp.cn 官网 https://ossrs.net/lts/zh-cn 播放器1 https://www.cdnbye.com 播放器2 https://www.artplayer.org …

苹果的Apple GPT要来了?

据外媒消息,苹果正在内部开发类 ChatGPT 的产品,与微软、OpenAI、谷歌、Meta 等科技巨头在生成式 AI 赛道展开竞争。该消息使得苹果股价上涨了 2%。据苹果工程师透露,苹果在内部构建了代号为“Ajax”的大语言模型开发框架,并构建了…

【C语言】表达式求值相关问题汇总—>隐式类型转换(整型提升)、算数转换与操作符优先级汇总(收藏查阅)

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》 🌝每一个不曾起舞的日子,都是对生命的辜负。 目录 前言: 一、隐式类型转换 (一)整型提升的意义…

【六天】高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

最初的互补发电系统,就是将不同发点组件进行简单的组合,因为缺乏详细的数学计算模型,同时系统只用于保证率低的用户,导致使用寿命不长。随着新能源系统应用范围的不断扩大,保证率和经济性要求的提高,需要高…

Rust vs Go:常用语法对比(四)

题图来自 Go vs. Rust performance comparison: The basics 61. Get current date 获取当前时间 package mainimport ( "fmt" "time")func main() { d : time.Now() fmt.Println("Now is", d) // The Playground has a special sandbox, so you …

【力扣周赛】第 354 场双周赛

文章目录 Q1:2784. 检查数组是否是好的解法1——排序模拟判断解法2——哈希表计数模拟判断 Q2:6926. 将字符串中的元音字母排序Q3:6931. 访问数组中的位置使分数最大(线性DP)Q4:6922. 将一个数字表示成幂的…

什么是神经网络?

我们常常使用深度学习来指训练神经网络的过程。 在这里举一个房屋价格预测的例子:假设有一个数据集,它包含了六栋房子的信息。所以,你知道房屋的面积是多少平方米,并且知道这个房屋的价格。这是,你想要拟合一个根据房屋…

【Linux】linux工具和命令

这里写目录标题 一、Linux常用命令:二、Linux安装软件:1.yum安装2.Linux和Windows文件互传3.yum卸载软件 三、vim编辑器1.命令模式2.vim配置项说明3.vim操作总结 一、Linux常用命令: ls 显示当前目录下的文件 ls-a 显示当前目录下所有文件&a…

自定义类型:结构体进阶学习分享

自定义类型:结构体进阶学习分享 前言1 结构体的基础知识2 结构的声明3 特殊声明4 结构的自引用5 结构体变量的定义和初始化6 结构体内存对齐6.1 计算结构体大小相关笔试题(基于VS)笔试题一:笔试题二: 6.2 为什么存在内…

【C语言】指针进阶(1)

在前期的文章中,我们已经学习完了指针初阶的内容,这期我们开始学习指针的进阶部分。 指针初阶文章入口: 指针初阶 目录 重点知识概览 前期回顾 字符指针 指针数组 数组指针 数组指针的定义 &数组名VS数组名 数组指针的使用 数组…

Mac电脑文件夹无权限问题

sudo cp 16.5.zip /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport 走到之前的folder ,右键选择get info更改權限, 再應用到所有子文件夹 右下解鎖再加自己Read & Write, -右邊拉下應該可以應用到所有子文件 这样就可以…

Java ~ Executor ~ ExecutorCompletionService【总结】

前言 文章 相关系列:《Java ~ Executor【目录】》(持续更新)相关系列:《Java ~ Executor ~ ExecutorCompletionService【源码】》(学习过程/多有漏误/仅作参考/不再更新)相关系列:《Java ~ Exe…

如何做需求分析

目录 核心理念: 主要目的: 具体思路: 注意事项: 核心理念: 首先需要想清楚一个问题:作为一个测试,有没有把需求当作产品中的一个组成部分,然后尽到一个测试的责任与义务&#x…

JavaScript中truthy(真值)或者Falsy(假值)

● 在JavaScript中,有五个值是falsy ○ 0 ○ ’ ’ ○ undefined ○ null ○ NaN 除此之外,任何不是空值的都是真值; 假值是什么意思呢?就是转换为布尔值都是false,反则就是true 例如: console.log(Boole…

论文阅读:矩阵乘法GEMM的cache优化,子矩阵的切分方法Anatomy of High-Performance MatrixMultiplication

矩阵乘法优化的知名论文goto paper: 矩阵乘法的优化需要将矩阵切分成子矩阵,用子矩阵相乘的结果组合为原矩阵相乘的结果: 上图是拆分矩阵的方法,M表示矩阵,X方向和Y方向的两个维度都是未知的。P表示横条或竖条&#x…

微信小程序使用ECharts的示例详解

目录 安装 ECharts 组件使用 ECharts 组件图表延迟加载 echarts-for-weixin 是 ECharts 官方维护的一个开源项目,提供了一个微信小程序组件(Component),我们可以通过这个组件在微信小程序中使用 ECharts 绘制图表。 echarts-fo…

数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据...

全文链接:http://tecdat.cn/?p22813 本教程为读者提供了使用频率学派的广义线性模型(GLM)的基本介绍。具体来说,本教程重点介绍逻辑回归在二元结果和计数/比例结果情况下的使用,以及模型评估的方法(点击文末“阅读原文…

selenuimecharts——可视化分析csdn新星赛道选手展示头像、展示ip城市和断言参赛信息的有效性(进阶篇)

文章目录 ⭐前言⭐selenuim打开赛道报名界面获取新星赛道选手主页💖 获取参赛选手主页思路分析💖 selenuim获取参数选手代码块💖 selenuim获取参数选手主页城市💖echarts分析选手参数信息断言参赛信息的有效性: ⭐结束…

【技术面试】Java八股文业余选手-下篇(持续更新)

文章目录 5. RocketMQ 消息中间件、RabbitMQ、ActiveMQ【√】5.1 RocketMQ 6. Kafka 大数据量消息中间件、ElasticSearch、ZooKeeper【√】6.1 Kafka【√】6.2 ElasticSearch 7. 分布式、研发提效、高并发、线程安全【√】7.1 分布式与集群【√】7.2 高并发、线程安全【】7.3 研…

【数学建模】为什么存在最优策略?

一、说明 在进行优化回归过程,首先要看看是否存在最优策略? 在有限马尔可夫决策过程 (MDP) 中,最优策略被定义为同时最大化所有状态值的策略。换句话说,如果存在最优策略,则最大化状态 s 值的策…