Qt推流程序自动生成网页远程查看实时视频流(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)

news2024/12/22 18:52:26

一、前言说明

推流程序将视频流推送到流媒体服务器后,此时就等待验证拉流播放,一般可以选择ffplay命令行播放或者vlc等播放器打开播放,也可以选择网页直接打开拉流地址播放,一般主流的浏览器都支持网页直接播放hls/m3u8/webrtc类型的视频流,而且推流的主要目的可能就是为了能够在各个客户端中取流播放,尤其是网页端,毕竟在各种操作系统上,网页浏览器是基础组件,只要你的程序能够在网页中运行,那就相当于通吃各种操作系统,不用再去费劲心力的去开发各个平台的程序。视频监控行业现在也是越发严格的要求最好能够在网页上直接播放视频流,尤其是各个监控摄像头,由于rtsp/rtmp默认网页不支持直接播放,需要推流转换成hls/m3u8/webrtc来播放,hls格式的一般延迟比较大,首推webrtc格式的进行播放,实时性最好。

很多时候未必电脑上有播放器,但是浏览器肯定有,为了第一时间验证推流后的视频流是否正常,所以直接在推流程序中加上了测试网页的功能,就是主动生成一个宫格形式的视频播放列表,自动打开网页立即预览实时效果,本人不是专业的网页程序员,所以采用了最为简单直接的办法,那就是用iframe框架嵌套,一个通道相当于就一个iframe,默认iframe是带边框的,可以用frameborder=0属性来去掉,默认网页有边距和间距,可以用样式body{margin:3px;padding:0px;}来调整。自此推流后一键生成网页自动打开实时预览,非常哇咔咔。

二、功能特点

2.1 文件推流

  1. 指定网卡和监听端口,接收网络请求推送音视频等各种文件。
  2. 实时统计显示每个文件对应的访问数量、总访问数量、不同IP地址访问数量。
  3. 可指定多种模式,0-直接播放、1-下载播放。
  4. 实时打印显示各种收发请求和应答数据。
  5. 每个文件对应MD5加密的唯一标识符,用于请求地址后缀区分访问哪个文件。
  6. 支持各种浏览器(谷歌chromium/微软edge/火狐firefox等)、各种播放器(vlc/mpv/ffplay/potplayer/mpchc等)打开请求。
  7. 播放过程中可以任意切换播放进度,支持倍速播放。
  8. 需要推流的文件名称历史记录自动存储和打开加载应用。
  9. 切换文件获取访问地址,自动拷贝地址到剪切板方便直接粘贴测试使用。
  10. 极低CPU占用,128路1080P同时推流不到1%CPU占用,异步发送数据机制。
  11. 纯QTcpSocket通信,不依赖流媒体服务程序,核心源码不到500行,注释详细,功能完整。
  12. 每个推流都可以手动指定唯一标识符(方便拉流/用户无需记忆复杂的地址),没有指定则按照策略随机生成hash值。
  13. 自动生成测试网页直接打开播放,可以看到实时效果,自动按照数量对应宫格显示。
  14. 支持Qt4/Qt5/Qt6任意版本,支持任意系统(windows/linux/macos/android/嵌入式linux等)。

2.2 网络推流

  1. 支持各种本地视频文件和网络视频文件。
  2. 支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。
  3. 支持将本地摄像头设备推流,可指定分辨率和帧率等。
  4. 支持将本地桌面推流,可指定屏幕区域和帧率等。
  5. 自动启动流媒体服务程序,默认mediamtx(原rtsp-simple-server),可选用srs、EasyDarwin、LiveQing、ZLMediaKit等。
  6. 可实时切换预览视频文件。
  7. 推流的清晰度和质量可调。
  8. 可动态添加文件、目录、地址。
  9. 视频文件自动循环推流,如果视频源是视频流,在掉线后会自动重连。
  10. 网络视频流自动重连,重连成功自动继续推流。
  11. 网络视频流实时性极高,延迟极低,延迟时间大概在100ms左右。
  12. 极低CPU占用,4路主码流推流只需要占用0.2%CPU。理论上常规普通PC机器推100路毫无压力,主要性能瓶颈在网络。
  13. 推流后除了用rtmp地址访问以外,还支持直接hls/webrtc访问,可以直接浏览器打开看实时画面。
  14. 可以推流到外网服务器,然后通过手机、电脑、平板等设备播放对应的视频流。
  15. 每个推流都可以手动指定唯一标识符(方便拉流/用户无需记忆复杂的地址),没有指定则按照策略随机生成hash值。
  16. 自动生成测试网页直接打开播放,可以看到实时效果,自动按照数量对应宫格显示。
  17. 支持Qt4/Qt5/Qt6任意版本,支持任意系统(windows/linux/macos/android/嵌入式linux等)。

三、体验地址

  1. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 名称:bin_video_push
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun
  4. 个人主页:https://blog.csdn.net/feiyangqingyun
  5. 知乎主页:https://www.zhihu.com/people/feiyangqingyun/

四、使用步骤

4.1 文件推流

  1. 选择或者填写要监听的网卡IP地址,填写好监听端口,建议默认即可。
  2. 单击添加文件或者目录,选择要加入推流的音视频文件,添加成功以后会自动罗列在表格中。
  3. 单击启动服务按钮,会变成停止服务字样表示启动服务成功。
  4. 从表格中选中一行,会自动将该音视频文件的播放地址填写到右下角,同时也会自动拷贝到剪切板。
  5. 将地址粘贴到浏览器地址栏回车即可查看播放音视频,可以任意切换播放进度。
  6. 将地址用vlc或者其他播放器打开即可查看播放音视频,可以任意切换播放进度。
  7. 文件推流服务支持多个同时请求,表格中会显示每个文件对应正在请求中的数量,右下角也有统计总请求数量,还有统计不同IP地址的请求总数。
  8. 单击停止服务按钮会停止所有服务,由于存在缓存的关系,停止以后缓存中的视频还可以继续播放,过一段时间就不能播放。
  9. 在启动服务后支持动态添加文件、移除文件、清空文件。

4.2 网络推流

  1. 选择或者填写推流的前缀地址,建议默认即可。
  2. 单击添加文件或者目录,选择要加入推流的音视频文件,添加成功以后会自动罗列在表格中。
  3. 单击添加地址,可以从下拉框中选择或者填写,下拉选项中是一些格式模板,比如本地摄像头、本地桌面、电视台、网络摄像机等。
  4. 单击启动服务按钮,会变成停止服务字样表示启动服务成功。
  5. 在启动服务后支持动态添加地址、移除地址、清空地址。如果处于启动服务中,添加后会立即推流。
  6. 从表格中选中一行,会自动将播放地址填写到右下角,同时也会自动拷贝到剪切板。
  7. 一次推流可以分多种不同的地址访问,右下角总共有三种地址,第一种是rtmp开头的视频流地址,可以用各种播放器打开,第二种是hls(m3u8)格式的地址,一般用于网页浏览器显示,第三种是webrtc格式的地址,一般用于浏览器或者部分支持该格式的播放器。
  8. 将地址粘贴到浏览器地址栏回车即可查看视频流,地址也可以用播放器打开。
  9. 单击停止服务按钮会停止所有服务,在启动服务后支持动态添加文件、移除文件、清空文件。

五、效果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

流批一体的近实时数仓的思考与设计

摘要:基于对数据时间旅行的思考,引出了对目前三种数仓形态和两种数仓架构的思考。结合数据湖在 Flink 的应用和数据湖元数据类型的思考,探索了基于数据湖的 Flink SQL 流批一体的实践,在流批一体 SQL 表达一致、结果一致性、流批任…

【JS】1686- 重学 JavaScript API - Clipboard API

🏝 1. 什么是 Clipboard API 1.1 概念介绍 Clipboard API[1] 是一组 JavaScript API,用于在浏览器中操作剪贴板。通过 Clipboard API,开发者可以将文本、图片和其他数据复制到剪贴板,也可以从剪贴板中读取数据,实现复制…

OPPO解散芯片团队的真相,真的不缺钱?

OPPO解散芯片研发团队,各方都喜欢说OPPO不缺钱,解散芯片研发团队应该不是因为资金问题,然而仔细看看当下全球智能手机市场的表现,就未必会如此想了。 全球手机市场的出货量在2022年下跌了12%,跌穿了12亿部;…

【JVM】4. 虚拟机栈

文章目录 4.1. 虚拟机栈概述4.1.2. 初步印象4.1.3. 内存中的栈与堆4.1.4. 虚拟机栈基本内容Java虚拟机栈是什么?生命周期作用栈的特点面试题:开发中遇到哪些异常? 4.2. 栈的存储单位4.2.1. 栈中存储什么?4.2.2. 栈运行原理4.2.3. …

GPT理解的CV:基于Yolov5的半监督目标检测

关注并星标 从此不迷路 计算机视觉研究院 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 计算机视觉研究院专栏 作者:Edison_G 主要贡献是提出了一种名为“Efficient Teacher”的半监督目标检测算法。与传统的监督学习算法不同&…

10人面试9个答错?鹅厂T12详解MySQL加锁机制

👉腾小云导读 鹅厂有一道关于「数据库锁」的面试题。我们发现其实很多 DBA (数据库管理员,Database administrator)包括工作好几年的 DBA 都答得不太好。这说明 MySQL 锁的机制其实还是比较复杂,值得深入研究。本文对3…

探索Vue的组件世界-实现Vue插件

一个好的框架满足几大设计原则: 开闭原则:对修改源码关闭,对功能扩展开放 vue作为一个优秀的组件框架:满足开闭原则,提供良好的插件机制,以提供三方来扩展功能 Mixin模式 Vue.mixin(mixin) 全局注册的m…

嵌入式 QT 定时器与计时器

目录 1、定时器 2、计时器 2.1 QTime 时间转换成字符串函数 3、QT 获取日期,时间,星期 4、综合应用 定时器是用来处理周期性事件的一种对象,类似于硬件定时器。例如设置一个定时器的定时周期为 1000 毫 秒,那么每 1000 毫秒就会…

现在的00后,真是卷死了呀,辞职信准备好了·····

都说00后躺平了,但是有一说一,该卷的还是卷。这不,三月份春招我们公司来了个00后,工作没两年,跳槽到我们公司起薪23K,都快接近我了。 后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了…

Kali-linux使用社会工程学工具包(SET)

社会工程学工具包(SET)是一个开源的、Python驱动的社会工程学渗透测试工具。这套工具包由David Kenned设计,而且已经成为业界部署实施社会工程学攻击的标准。SET利用人们的好奇心、信任、贪婪及一些愚蠢的错误,攻击人们自身存在的…

python使用海龟turtle实现绘制汉字、中文

一、实现要求 使用python中的turtle库绘制指定汉字、中文 二、实现思路 1、要想实现汉字的绘制,首先需要知道汉字的笔画坐标,汉字的笔画坐标在网上有,需要使用爬虫技术抓取到指定汉字的笔画坐标信息 2、根据汉字的笔画坐标信息,使…

基于Kubernetes的电商平台部署:实现高可用、弹性伸缩与容器化管理

▲ 点击上方"DevOps和k8s全栈技术"关注公众号 背景:电商平台的高可用性和可伸缩性是保证用户体验和业务发展的重要因素。Kubernetes(K8s)作为一个容器编排平台,可以提供强大的容器管理和自动化部署能力,使得…

人手一个 Midjourney,StableStudio 重磅开源!

公众号关注 “GitHubDaily” 设为 “星标”,每天带你逛 GitHub! 上个月 19 号,Stability AI 开源大语言模型 StableLM,模型的 Alpha 版本有 30 亿和 70 亿参数,并支持商用。 过去仅一个月,Stability AI 再次…

鉴权管理系统(JWT技术架构)——SpringBoot2+Vue2(一定惊喜满满,万字长文)

初衷: 一直不太理解整个前后端的鉴权,跨域等问题,抽空两个晚上整理出万字文章,也是对于自己的一个交代,现在共享出来,希望大家也能受益,将使用过程在这里一一详述,还是多说一句&…

简述 JavaScript 中 prototype

简述 JavaScript 中 prototype 这篇笔记主要捋一下这么几个概念: JS 的继承构造函数new 的作用及简易实现__proto__ & prototype同样的方法,class 和 prototype 中分别是怎么实现的 基础概念 JS 是通过 prototype chaining 实现继承的语言&#…

linux(缓冲区学习)

目录: 1.对进程是如何和这个进程打开文件进行关联的总结 2.标准输出和标准错误都是往显示器上打印--有何区别 3.缓冲区 --------------------------------------------------------------------------------------------------------------------------- 1.对进程是…

双模齐下,提质增效:知微携手CODING共创BizDevOps体系新篇章

为了提升工作和管理效率,工具建设是许多企业不得不面对的现实,然而在工具建设落地过程中,往往存在一系列的问题。如不同组织、部门之间互不相通,各自为政,工具流程与实际工作所需不符,导致工具建设的结果是…

做实大模型的产业价值,度小满深耕“NLP+金融”

2023年的五月,称得上一句AI之夏。 大模型层出不穷、扎堆发布。 这一轮由大模型推动的AI热潮中, NLP(自然语言处理)技术与金融落地场景的结合备受期待。金融行业是数字化、智能化的先行者,也是大模型技术落地的最佳领域…

chatgpt赋能Python-python3h怎么操作

Python3 SEO操作指南 Python3语言已成为计算机编程领域的标准和主要工具之一。SEO(Search Engine Optimization)是一种促进网站在搜索引擎结果中排名的技术。Python3也可以用来执行SEO操作,本文将介绍如何使用Python3进行SEO操作&#xff0c…

替换字符串的关键字KeywordProcessor

【小白从小学Python、C、Java】 【等级考试500强双证书考研】 【Python-数据分析】 替换字符串的关键字 KeywordProcessor [太阳]选择题 以下说法错误的一项是: from flashtext import KeywordProcessor myKP KeywordProcessor() myKP.add_keyword(English, Math) …