当前位置:首页 » 《随便一记》 » 正文

Qt编写推流综合应用示例(文件推流/桌面推流/本地摄像头/网络摄像头/转发推流/视频分发)

0 人参与  2023年04月25日 21:17  分类 : 《随便一记》  评论

点击全文阅读


一、功能特点

1.1 文件推流

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

1.2 网络推流

支持各种本地视频文件和网络视频文件。支持各种网络视频流,网络摄像头,协议包括rtsp、rtmp、http。支持将本地摄像头设备推流,可指定分辨率和帧率等。支持将本地桌面推流,可指定屏幕区域和帧率等。自动启动流媒体服务程序,默认mediamtx(原rtsp-simple-server),可选用srs、EasyDarwin、LiveQing、ZLMediaKit等。可实时切换预览视频文件。推流的清晰度和质量可调。可动态添加文件、目录、地址。视频文件自动循环推流,如果视频源是视频流,在掉线后会自动重连。网络视频流自动重连,重连成功自动继续推流。网络视频流实时性极高,延迟极低,延迟时间大概在100ms左右。推流后除了用rtmp地址访问以外,还支持直接hls/webrtc访问,可以直接浏览器打开看实时画面。支持Qt4/Qt5/Qt6任意版本,支持任意系统(windows/linux/macos/android/嵌入式linux等)。

二、使用步骤

2.1 文件推流

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

2.2 网络推流

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

三、体验地址

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

四、各种命令

rtmp推流 ffmpeg -re -stream_loop -1 -i f:/mp4/10.mp4 -c copy -f flv rtmp://192.168.0.110:6908/streamrtsp推流 ffmpeg -re -stream_loop -1 -i f:/mp4/10.mp4 -c copy -f rtsp rtsp://192.168.0.110:6907/stream远程推流 ffmpeg -re -stream_loop -1 -i f:/mp4/11.mp4 -c copy -f flv rtmp://47.114.127.78:6908/stream网络设备 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实时桌面 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本地设备 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播放设备 ffplay -f dshow video=“USB Video Device”:audio=“麦克风 (USB Audio Device)”

点击全文阅读


本文链接:http://zhangshiyu.com/post/60030.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1