门户
书籍
教程
论坛
问答
下载
签到
个人空间
帐号
自动登录
找回密码
密码
登录
立即注册
账号
自动登录
找回密码
密码
登录
立即注册
请绘制轨迹完成人机验证
由vaptcha提供技术支持
登录
注册
搜索
搜索
搜索
热搜
qml
quick
串口
输入中文
数据库
arm
百度地图
qt聊天
QT安装
安装
多窗口
中文乱码
聊天
局域网
鼠标
QT
图片
乱码
rs485通讯
多线程
android
多文档编辑器
本版
用户
本版
用户
【HUX】问题互助平台
博客
动态
好友
帖子
收藏
道具
勋章
任务
淘帖
动态
日志
相册
分享
记录
留言板
群组
门户
导读
排行榜
设置
我的收藏
退出
Qt开源社区
›
开放区(网友自由发帖区)
›
项目作品
›
Qt推流程序(视频文件/视频流/摄像头/桌面转成流媒体rtm ...
发布主题
返回列表
Qt推流程序(视频文件/视频流/摄像头/桌面转成流媒体rtmp+h...
0
回复
1231
查看
[复制链接]
liudianwu
当前离线
积分
2616
liudianwu
累计签到:7 天
连续签到:1 天
来源:
2023-5-13 14:24:06
显示全部楼层
|
阅读模式
## 一、前言说明
推流直播就是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号从手机端,电脑端,摄影机端打包传到服务器的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观看直播时就会发生卡顿等现象,观看体验比较糟糕。主流推送协议有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
](
https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g
) 提取码:01jf 名称:bin_video_push
2. 国内站点:[
https://gitee.com/feiyangqingyun
](
https://gitee.com/feiyangqingyun
)
3. 国际站点:[
https://github.com/feiyangqingyun
](
https://github.com/feiyangqingyun
)
4. 个人主页:[
https://blog.csdn.net/feiyangqingyun
](
https://blog.csdn.net/feiyangqingyun
)
5. 知乎主页:[
https://www.zhihu.com/people/feiyangqingyun/
](
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. 单击停止服务按钮会停止所有服务,在启动服务后支持动态添加文件、移除文件、清空文件。
## 五、效果图
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有帐号?
立即注册
x
回复
使用道具
举报
返回列表
发表新帖
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满)
我知道了