一、功能特点

1.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等)。

1.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. 推流后除了用rtmp地址访问以外,还支持直接hls/webrtc访问,可以直接浏览器打开看实时画面。
  13. 支持Qt4/Qt5/Qt6任意版本,支持任意系统(windows/linux/macos/android/嵌入式linux等)。

二、使用步骤

2.1 文件推流

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





2.2 网络推流

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









三、体验地址

  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/

四、各种命令

  1. rtmp推流 ffmpeg -re -stream_loop -1 -i f:/mp4/10.mp4 -c copy -f flv rtmp://192.168.0.110:6908/stream
  2. rtsp推流 ffmpeg -re -stream_loop -1 -i f:/mp4/10.mp4 -c copy -f rtsp rtsp://192.168.0.110:6907/stream
  3. 远程推流 ffmpeg -re -stream_loop -1 -i f:/mp4/11.mp4 -c copy -f flv rtmp://47.114.127.78:6908/stream
  4. 网络设备 ffmpeg -i rtsp://admin:Admin123456@192.168.0.64:554/Streaming/Channels/101 -vcodec copy -acodec copy -f flv rtmp://192.168.0.110:6908/stream
  5. 实时桌面 ffmpeg -f gdigrab -r 30 -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp -g 5 -an rtsp://192.168.0.110:6907/stream
  6. 本地设备 ffmpeg -f dshow -i video="USB Video Device":audio="麦克风 (USB Audio Device)" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f rtsp rtsp://192.168.0.110:6907/stream
  7. 播放设备 ffplay -f dshow video="USB Video Device":audio="麦克风 (USB Audio Device)"

Qt/C++编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)的更多相关文章

  1. 结合WebSocket编写WebGL综合场景示例

    在WebGL场景中导入多个Babylon骨骼模型,在局域网用WebSocket实现多用户交互控制. 首先是场景截图: 上图在场景中导入一个Babylon骨骼模型,使用asdw.空格.鼠标控制加速度移动 ...

  2. Qt Quick综合实例之文件查看器

    假设你基于Qt SDK 5.3.1来创建一个Qt Quick App项目,项目模板为你准备的main.qml文档的根元素是ApplicationWindow或Window.这次我们就以Applicat ...

  3. 为Lua5.3编写C模块简单示例

    为Lua5.3编写C模块简单示例 一.编译安装Lua5.3 MSVC 命令行安装脚本: @echo off md bin md lib md include cd src cl /c /nologo ...

  4. 利用Eric+Qt Designer编写倒计时时钟

    [前言]前几日通过编写命令行通讯录,掌握了Python的基本语法结构,于是开始向更高水平冲击,利用Eric与Qt Designer 编写一个带界面的小程序.本次实操中也确实遇到了不少问题,通过学习也都 ...

  5. PIE SDK组件式开发综合运用示例

    1. 功能概述 关于PIE SDK的功能开发,在我们的博客上已经分门别类的进行了展示,点击PIESat博客就可以访问,为了初学者入门,本章节将对从PIE SDK组件式二次开发如何搭建界面.如何综合开发 ...

  6. WebRTC VideoEngine综合应用示例(一)——视频通话的基本流程(转)

    本系列目前共三篇文章,后续还会更新 WebRTC VideoEngine综合应用示例(一)——视频通话的基本流程 WebRTC VideoEngine综合应用示例(二)——集成OPENH264编解码器 ...

  7. Qt *.pro编写一般规则

    qmake 之 CONFIG 与 QT 乱谈 看qtcn论坛中经常有人忘记 QT+=network 等语句.随便写写吧,或许对他人有帮助. 写来写去,发现越写越乱,就这样吧,反正主要的内容很简单. d ...

  8. 全互联结构DVPN综合配置示例

    以下内容摘自正在全面热销的最新网络设备图书“豪华四件套”之一<H3C路由器配置与管理完全手册>(第二版)(其余三本分别是:<Cisco交换机配置与管理完全手册>(第二版).&l ...

  9. javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)

    javaCV系列文章: javacv开发详解之1:调用本机摄像头视频 javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG.j ...

  10. (八) .launch文件 ---编写简单的启动脚本文件

    下面我们将介绍,如何编写一个启动脚本程序:(.launch文件) 还记得我们在 创建ROS软件包教程 中创建的第一个程序包(beginner_tutorials)吗,现在我们要使用它. 在 begin ...

随机推荐

  1. 关于 vue3 中的 fragment 组件

    vue3 中的模板中只能返回一个元素 ,否则报错,使用 fragment 组件可以返回多个元素标签

  2. Vue 的最大优势是???

    Vue 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.另一方面,当与现代 ...

  3. Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解

    title: Nuxt.js 应用中的 app:templatesGenerated 事件钩子详解 date: 2024/10/19 updated: 2024/10/19 author: cmdra ...

  4. 『玩转Streamlit』--多页应用

    Streamlit不仅让创建单页应用变得易如反掌,更通过一系列创新特性,支持构建多页面应用,极大地丰富了用户体验和数据探索的可能性. 随着我们Streamlit App的功能逐渐增多之后,单个页面展示 ...

  5. 如何使用ConsulManager来优雅的管理主机监控与站点监控

    概述 ConsulManager是一个使用Flask+Vue开发的Consul WEB管理工具,比官方自带的WEB UI实现了更多的功能. 可以方便的对Consul Services进行增删改查,支持 ...

  6. DCDC电路设计之FB引脚布线

    该随笔从与非网上搬运,原文: 案例讲解,DCDC电源反馈路径的布线规则 下面为正文内容: 在本文中,将对用来将输出信号反馈给电源ic的FB引脚的布线进行说明. 反馈路径的布线 反馈信号的布线在信号布线 ...

  7. jmeter如何产生批量数据?

    在使用jmeter时,若需要产生批量数据,可以通过连接数据库--执行相关sql进行操作,例如添加20条数据 步骤: 1.添加jdbc 数据库配置信息 2.添加循环控制器(循环次数20) 3.循环控制器 ...

  8. 【一步步开发AI运动小程序】五、帧图像人体识别

    随着人工智能技术的不断发展,阿里体育等IT大厂,推出的"乐动力"."天天跳绳"AI运动APP,让云上运动会.线上运动会.健身打卡.AI体育指导等概念空前火热.那 ...

  9. 1、oracle实例、软件、库简单讲解

    oracle的基本结构 oracle软件(RDBMS) oracle软件:关系型数据库管理系统 在linux系统上,oracle软件安装在:/u01/app/oracle这个目录下 oracle数据库 ...

  10. Uncaught Error: Cannot find module 'strip-ansi'

    我的项目是typescript开发语言,原本我只写了".ts",导致上面运行yarn dev编译报错,页面报错.加上".js"后成功 报错原因:在webpack ...