Qt推流程序(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)可在网页和播放器远程观看

news2025/6/20 11:25:49

一、前言说明

推流直播就是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号从手机端,电脑端,摄影机端打包传到服务器的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验比较糟糕。主流推送协议有RTMP、HLS、SRT等。RTMP是目前最主流的流媒体传输协议,对CDN支持良好,实现难度较低,是大多数的直播平台的选择。使用RTMP传输的延时通常在1–3秒,适合手机端。不过RTMP不支持浏览器,如果直播服务需要浏览器,需要另外的推送协议支持。HLS是Apple公司定义的基于HTTP的流媒体实时传输协议。HLS是以点播的技术实现了直播的体验。因为每个小文件的时长很短,客户端可以很快地切换码率,以适应不同带宽条件下的播放。但是,HLS的延迟一般会高于普通的流媒体直播协议。RTC是一个支持浏览器进行实时语音、视频对话的开源协议。RTC支持目前的主流浏览器,即便在网络信号一般的情况下也具备较好的稳定性。可以实现点对点通信,通信双方延时低,是实现“连麦”功能比较好的选择。

拉流就是转播其他平台的视频。是将服务器已有直播内容,用指定地址进行拉取的过程。用户端向服务器发送视频文件的拉流地址的访问请求,则访问点播平台分发直播视频流,然后接收到分发的视频数据,从而达到在第三方平台观看转播视频的效果。推拉流基本上都要用到ffmpeg,用ffmpeg代码即可实现推流也可以实现拉流播放,唯独流媒体服务器一般选择第三方的组件轮子,比如mediamtx、srs、EasyDarwin、LiveQing、ZLMediaKit等,个人偏好用mediamtx,单文件发布,功能满足,go编写天生高并发,开源免费。

二、功能特点

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. 支持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. 支持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/521128.html

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

相关文章

Linux基础篇-将虚拟机的网络配置成静态的

一般都是主机连接服务器,服务器连接主机也是为了上网,通过NAT地址转换就可以。为了防止服务器的IP地址变化,将虚拟机的IP地址设置成静态的。 NAT模式下,为了让主机和虚拟机之间能互相ping通,主机虚拟了一张网卡出来&am…

PicGo+阿里云OSS+Typora图床设置实践及解决方案

你是否遇到想跨平台看markdown文件结果图片加载不出,csdn上传的时候还要手动操作的命苦感,那就接着往下看吧! 本文为作者在安装过程中的总结,争取以最简洁的方式帮助大家安装 markdown语法在程序员的生活中运用广泛,…

测试用例、测试流程模型、测试方法详解 超详细分解

1. 测试用例 1.1 测试用例前提 什么是测试用例? 一组由前提条件、测试输入、执行条件以及预期结果等组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档。 为什么编写测试用例 (1&#xff0…

股票量价关系基础知识1

什么叫成交量 成交量的概念中,包含“成交”、“成交量”和“成交值”三个子概念。 所谓“成交”,就是买卖双方同意所达成的交易行为。“成交”是商业用语,因为股市本事就是一项商业活动,股票市场就是一个大商场,各地证…

每日学术速递5.9

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Tracking through Containers and Occluders in the Wild(CVPR 2023) 标题:在野外通过容器和遮挡物进行追踪 作者:Basile Van Hoorick, Pavel Tokmakov, Si…

C++数据封装以及定义结构的详细讲解鸭~

名字:阿玥的小东东 博客主页:阿玥的小东东的博客_CSDN博客-python&&c高级知识,过年必备,C/C知识讲解领域博主 目录 定义结构 访问结构成员 结构作为函数参数 指向结构的指针 typedef 关键字 C 数据封装 数据封装的实例 设计策略 C 类 &…

UEngine运行器2.1.0——优化UEngine安装器(Ubuntu)、修复问题

介绍 新版本Deepin/UOS发布后,可以在应用商店安装部分官方已适配的安卓应用,对爱好者来说,不能自己安装APK软件包始终差点意思,本程序可以为Deepin/UOS上的UEngine安卓运行环境安装自定义APK软件包,并能发送安装的APK包…

【GAMES101】作业1学习总结

本系列博客为记录笔者在学习GAMES101课程时遇到的问题与思考。 GAMES101:课程官网GAMES101:B站视频GAMES101:相关文件下载(百度网盘) 一、基础题 通过Assignment1.pdf可以知道基础题的任务就是填充完整两个函数 get_model_matrix()get_pro…

详解c++---array和模板

目录标题 什么是array非类型模板参数函数模板的特化为什么会有特化如何进行特化类模板的特化部分特化模板特化参数的限制 模板的匹配规则模板的分离编译模板的总结 什么是array 在c语言里面使用一个括号就能申请到一段连续的空间,比如说想要申请一段空间用于存储10…

每日学术速递5.8

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Personalize Segment Anything Model with One Shot 标题:一键个性化细分任何模型 作者:Renrui Zhang, Zhengkai Jiang, Ziyu Guo, Shilin Yan, Junting Pa…

ArcMap创建格网统计图

目录 前言 一、人口数据获取 来源一:中科院地理所公开数据集 来源二:WorldPop数据集 二、人口格网统计步骤 1.创建渔网 2.人口数据处理 2.1 栅格转点 2.2 空间插值——处理人口缺失数据 2.3 空间连接——渔网人口统计 总结 前言 在科研中&am…

南华大学编译原理----词法分析器的设计与实现、语法分析器的设计与实现

下载链接:(各位同学不需要充钱哈,这种我也没有收益,去淘宝上面找个代下,大概0.5元就能下载实验报告,用来给同学们参考,下载积分不是我设置的,是网站自己默认的) --------…

English Learning - L3 作业打卡 Lesson1 Day1 2023.5.5 周五

English Learning - L3 作业打卡 Lesson1 Day1 2023.5.5 周五 引言🍉句1: Every people has its own way of saying things , its own special expressions.成分划分弱读连读语调自身问题: 🍉句2: Many everyday American expressions are ba…

股票量价关系基础知识6----图解各阶段量价关系:价涨量平

图解各阶段量价关系:价涨量平 价涨量平是指股价上涨而成交量却变化不大,这可能是场外资金仍在观望,进场做多力量不大。 一、上涨初期的价涨量平 (一)形态分析 股价触底反弹后小幅上涨,成交量却持平&#x…

【认知提升思维篇】之向上越阶的跳圈思维(学霸的秘籍)

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:普本…

软软件设计师算法上午题概念笔记

N皇后问题 **走迷宫 ** 以上q2不行 因为不能在同一行 这条路所有的都走不通所以需要回溯回溯至上一条路,把上一个皇后位置改变下 重新放皇后三 皇后四不能放所以回溯,发现皇后三也不能放 再往上回溯,发现2也不行那就回溯皇后1 总结&…

网络安全工程师必须面对的三个坎必备十大基础知识!

前言 我一个朋友老赵,老赵在一家大型互联网公司做高级网络安全工程师,从实习生到工程师整整待了六年。去年他们公司为了缩减成本,做了裁员,他也在其中,取而代之的是一个只有三年工作经验的 “新人” … 老赵想着&…

小牟Andorid下面MD5具体实现的思路总结

Android的开发往往需要一定数目demo 从今起MD5一些加密算法提取物 看看是如何实现的 首先,我们必须明确为什么加密? 1 数据安全处理 2 防止数据窃取 3 有效的避免恶意攻击 4 保证文件完整性 5 优化搜索 作为文件(数据)索引…

【Java零基础入门篇】第 ⑦ 期 - 常用类库

博主:命运之光 专栏:Java零基础入门 学习目标 掌握Java各种常用类库的使用方法。 目录 Java类库 字符串String String 概述 创建字符串对象的2种方式 String类的特点 创建字符串对象的2种方式 总结:创建字符串对象的2种方式区别 字符…

【C++】类和对象(下篇)

C类和对象下篇 构造函数的一点补充构造函数体赋值初始化列表explicit关键字 Static成员概念特性 友元友元函数友元类 内部类概念特性 匿名对象拷贝对象时的一些编译器优化几道例题 构造函数的一点补充 构造函数体赋值 在创建对象时,编译器通过调用构造函数&#x…