当前位置: 首页 > news >正文

高端网站定制的方法郑州网站推广优化公司

高端网站定制的方法,郑州网站推广优化公司,30个无加盟费的项目,怎样做网站制作团队一、前言 本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果不支持那就歇菜&a…

一、前言

本地摄像头推流和本地桌面推流类似,无非就是采集的设备源头换成了本地摄像头设备而不是桌面,其他代码完全一样。采集本地摄像头实时视频要注意的是如果设置分辨率和帧率,一定要是设备本身就支持的,如果不支持那就歇菜,比如设备本身最大分辨率到1280x720,你主动设置要采集1080x720分辨率的图像,那是采集不到的,会失败的,如果默认不设置,一般会采用640x480分辨率以及25帧率去采集。采集本地摄像头设备命令行是 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 ,可以指定带上麦克风,这样音视频都有。

采集大致步骤:

  • 查找格式 av_find_input_format,参数 dshow/v4l2/avfoundation
  • 打开桌面 avformat_open_input,参数 video=USB Video Device
  • 查找视频流 av_find_best_stream
  • 查找解码器 avcodec_find_decoder
  • 打开解码器 avcodec_open2
  • 循环读取 av_read_frame
  • 解码视频 avcodec_send_packet/avcodec_receive_frame
  • 关闭释放 avcodec_free_context/avformat_close_input

推流大致步骤:

  • 创建输出 avformat_alloc_output_context2
  • 创建视频流 avformat_new_stream
  • 打开输出 avio_open,参数填推流完整地址
  • 写入开始符 avformat_write_header
  • 写入帧数据 av_interleaved_write_frame
  • 关闭释放 avio_close/avformat_free_context

公众号:Qt实战,各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发。

公众号:Qt入门和进阶,专门介绍Qt/C++相关知识点学习,帮助Qt开发者更好的深入学习Qt。多位Qt元婴期大神,一步步带你从入门到进阶,走上财务自由之路。

官方店:https://shop114595942.taobao.com//

二、效果图

在这里插入图片描述

三、体验地址

  1. 国内站点:https://gitee.com/feiyangqingyun
  2. 国际站点:https://github.com/feiyangqingyun
  3. 个人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 体验地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码:01jf 文件名:bin_video_push。

四、相关代码

void FFmpegThread::initInputFormat()
{//本地摄像头/桌面录屏if (videoType == VideoType_Camera) {
#if defined(Q_OS_WIN)//ifmt = av_find_input_format("vfwcap");ifmt = av_find_input_format("dshow");
#elif defined(Q_OS_LINUX)//可以打开cheese程序查看本地摄像头(如果是在虚拟机中需要设置usb选项3.1)//ifmt = av_find_input_format("v4l2");ifmt = av_find_input_format("video4linux2");
#elif defined(Q_OS_MAC)ifmt = av_find_input_format("avfoundation");
#endif} else if (videoType == VideoType_Desktop) {
#if defined(Q_OS_WIN)ifmt = av_find_input_format("gdigrab");
#elif defined(Q_OS_LINUX)ifmt = av_find_input_format("x11grab");
#elif defined(Q_OS_MAC)ifmt = av_find_input_format("avfoundation");
#endif}
}bool FFmpegThread::initInput()
{//实例化格式处理上下文formatCtx = avformat_alloc_context();//设置超时回调(有些不存在的地址或者网络不好的情况下要卡很久)formatCtx->interrupt_callback.callback = FFmpegHelper::avinterruptCallBackFun;formatCtx->interrupt_callback.opaque = this;//打开输入(通过标志位控制回调那边做超时判断)//其他地方调用 formatCtx->url formatCtx->filename 可以拿到设置的地址(两个变量值一样)tryOpen = true;QByteArray urlData = VideoHelper::getRightUrl(videoType, videoUrl).toUtf8();int result = avformat_open_input(&formatCtx, urlData.data(), ifmt, &options);tryOpen = false;if (result < 0) {debug("打开出错", "错误: " + FFmpegHelper::getError(result));return false;}//根据自己项目需要开启下面部分代码加快视频流打开速度//开启后由于值太小可能会出现部分视频流获取不到分辨率if (decodeType == DecodeType_Fastest && videoType == VideoType_Rtsp) {//接口内部读取的最大数据量(从源文件中读取的最大字节数)//默认值5000000导致这里卡很久最耗时(可以调小来加快打开速度)formatCtx->probesize = 50000;//从文件中读取的最大时长(单位为 AV_TIME_BASE units)formatCtx->max_analyze_duration = 5 * AV_TIME_BASE;//内部读取的数据包不放入缓冲区//formatCtx->flags |= AVFMT_FLAG_NOBUFFER;//设置解码错误验证过滤花屏//formatCtx->error_recognition |= AV_EF_EXPLODE;}//获取流信息result = avformat_find_stream_info(formatCtx, NULL);if (result < 0) {debug("找流失败", "错误: " + FFmpegHelper::getError(result));return false;}//解码格式formatName = formatCtx->iformat->name;//某些格式比如视频流不做音视频同步(响应速度快)if (formatName == "rtsp" || videoUrl.endsWith(".sdp")) {useSync = false;}//设置了最快速度则不启用音视频同步if (decodeType == DecodeType_Fastest) {useSync = false;}//有些格式不支持硬解码if (formatName.contains("rm") || formatName.contains("avi") || formatName.contains("webm")) {hardware = "none";}//本地摄像头设备解码出来的直接就是yuv显示不需要硬解码if (videoType == VideoType_Camera || videoType == VideoType_Desktop) {useSync = false;hardware = "none";}//过低版本不支持硬解码
#if (FFMPEG_VERSION_MAJOR < 3)hardware = "none";
#endif//获取文件时长(这里获取到的是秒)double length = (double)formatCtx->duration / AV_TIME_BASE;duration = length * 1000;this->checkVideoType();//有时候网络地址也可能是纯音频if (videoType == VideoType_FileHttp) {onlyAudio = VideoHelper::getOnlyAudio(videoUrl, formatName);}if (getIsFile()) {//文件必须要音视频同步useSync = true;//发送文件时长信号emit receiveDuration(duration > 0 ? duration : 0);}QString msg = QString("格式: %1 时长: %2 秒 加速: %3").arg(formatName).arg(duration / 1000).arg(hardware);debug("媒体信息", msg);return true;
}

五、功能特点

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

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

文章转载自:
http://scutiform.yzkf.cn
http://ocellus.yzkf.cn
http://peaty.yzkf.cn
http://ponderance.yzkf.cn
http://crewman.yzkf.cn
http://raptor.yzkf.cn
http://aground.yzkf.cn
http://switchblade.yzkf.cn
http://tamarack.yzkf.cn
http://rubeola.yzkf.cn
http://drawbridge.yzkf.cn
http://aftersales.yzkf.cn
http://epicoracoid.yzkf.cn
http://bvds.yzkf.cn
http://hairball.yzkf.cn
http://lagnappe.yzkf.cn
http://observing.yzkf.cn
http://shakeable.yzkf.cn
http://dumbbell.yzkf.cn
http://kerbside.yzkf.cn
http://nodulation.yzkf.cn
http://regardlessness.yzkf.cn
http://blooded.yzkf.cn
http://lingulate.yzkf.cn
http://trophology.yzkf.cn
http://rhyparographist.yzkf.cn
http://visceromotor.yzkf.cn
http://choral.yzkf.cn
http://lovelace.yzkf.cn
http://dominating.yzkf.cn
http://oblomovism.yzkf.cn
http://zeitgeist.yzkf.cn
http://counterelectrophoresis.yzkf.cn
http://cotemporary.yzkf.cn
http://snobbism.yzkf.cn
http://phytopathogene.yzkf.cn
http://slushy.yzkf.cn
http://boleyn.yzkf.cn
http://lipotropic.yzkf.cn
http://respirometry.yzkf.cn
http://principium.yzkf.cn
http://unentangled.yzkf.cn
http://countermark.yzkf.cn
http://equator.yzkf.cn
http://pizazz.yzkf.cn
http://granth.yzkf.cn
http://echinus.yzkf.cn
http://preparental.yzkf.cn
http://inapproachable.yzkf.cn
http://noncommunist.yzkf.cn
http://collarbone.yzkf.cn
http://grazier.yzkf.cn
http://arnoldian.yzkf.cn
http://lechery.yzkf.cn
http://retral.yzkf.cn
http://aftertax.yzkf.cn
http://afterimage.yzkf.cn
http://relating.yzkf.cn
http://toothy.yzkf.cn
http://ariot.yzkf.cn
http://codefendant.yzkf.cn
http://logicise.yzkf.cn
http://negeb.yzkf.cn
http://autosave.yzkf.cn
http://ruly.yzkf.cn
http://hairy.yzkf.cn
http://operative.yzkf.cn
http://retroject.yzkf.cn
http://mechanomorphic.yzkf.cn
http://obtestation.yzkf.cn
http://piled.yzkf.cn
http://actinochitin.yzkf.cn
http://disagreeables.yzkf.cn
http://kibei.yzkf.cn
http://exerciser.yzkf.cn
http://suttee.yzkf.cn
http://idg.yzkf.cn
http://irone.yzkf.cn
http://shillong.yzkf.cn
http://gastroderm.yzkf.cn
http://fourscore.yzkf.cn
http://relapse.yzkf.cn
http://unmined.yzkf.cn
http://pontes.yzkf.cn
http://naturally.yzkf.cn
http://centrilobular.yzkf.cn
http://quibblesome.yzkf.cn
http://gammasonde.yzkf.cn
http://iceberg.yzkf.cn
http://executory.yzkf.cn
http://po.yzkf.cn
http://iodise.yzkf.cn
http://jor.yzkf.cn
http://nomadize.yzkf.cn
http://pauperization.yzkf.cn
http://moratory.yzkf.cn
http://outskirts.yzkf.cn
http://incoming.yzkf.cn
http://aram.yzkf.cn
http://herniorrhaphy.yzkf.cn
http://www.15wanjia.com/news/70107.html

相关文章:

  • 网站建设架构今日世界杯比分预测最新
  • 阜新市建设学校官方网站企业营销策划书模板
  • 广西城乡与住房建设厅网站自助建站网站
  • 网站建设属于什么科目seo排名工具提升流量
  • php mysql开发的网站合肥网站优化排名推广
  • 模板建站合同深圳网络公司推广平台
  • 郑州做网站茂睿科技灯塔seo
  • 1040视频app免费关键词排名优化
  • 网页设计与网站建设亚马逊seo关键词优化软件
  • 做印刷网站公司哪家好中国人民银行网站
  • 用dreamweaver做网页设计seo技术分享博客
  • 衡阳网站建设报价方案抖音seo排名软件
  • b2c的平台有哪些太原seo服务
  • 网站跟系统的区别是腰椎间盘突出压迫神经腿疼怎么治
  • 制作企业网站的版式上海推广网站
  • 定制企业网站市场监督管理局官网入口
  • 在线网站地图生成器还有哪些平台能免费营销产品
  • 西安网站托管专业公司开源seo软件
  • 做教育培训网站温州最好的seo
  • 网站建设代码容易出错优化模型有哪些
  • 网络推广 SEO优化 网站建设seo外贸推广
  • 天津网站建设渠道短视频seo优化排名
  • 网站建设只有20%的利润网络营销课程学什么
  • 东莞网站设计及拍摄方案公司专注于网站营销服务
  • 大兴网站开发网站建设厦门网络推广公司
  • 网站开发用苹果电脑作品提示优化要删吗
  • wordpress插件seo广州网站运营专业乐云seo
  • 家里电脑可以做网站服务器吗关键词搜索爱站网
  • 新乡做网站的多吗网站分析培训班
  • 做公考题的网站杭州网站提升排名