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

网站的经营方式如何查一个网站的备案信息

网站的经营方式,如何查一个网站的备案信息,ups国际快递网站建设,如何做简易个人网站一、前言 共享解码线程主要是为了降低CPU占用#xff0c;重复利用解码#xff0c;毕竟在一个监控系统中#xff0c;很可能打开了同一个地址#xff0c;需要在多个不同的窗口中播放#xff0c;形成多屏渲染的效果#xff0c;做到真正的完全的画面同步#xff0c;在主解码…一、前言 共享解码线程主要是为了降低CPU占用重复利用解码毕竟在一个监控系统中很可能打开了同一个地址需要在多个不同的窗口中播放形成多屏渲染的效果做到真正的完全的画面同步在主解码线程中切换了播放进度所有关联的同一个解码线程的播放窗体也会立即同步画面使得感官上看起来非常的舒服。 无论何种内核的解码线程除了句柄不能重复利用以外除非厂家提供的api接口就支持多个窗口渲染只要是能够解码拿到的yuv数据或者image图片数据都会以信号的形式发出来这就给共享解码线程提供了极大的便利性视频控件只管拿到数据绘制即可至于源头数据谁发信号过来就行所以思路就是搞一个线程队列记住新建过的解码线程在视频控件中打开播放的时候判断是否和之前已经打开过的线程的地址相同如果相同只需要增加一个关联信号槽就行也就是同一个解码线程后面对应的信号会发给多个不同的视频控件这就实现了解耦。可以大幅度降低资源的占用。很多著名的或者行业做的比较好的软件都是这样设计。 二、效果图 三、体验地址 国内站点https://gitee.com/feiyangqingyun国际站点https://github.com/feiyangqingyun个人作品https://blog.csdn.net/feiyangqingyun/article/details/97565652体验地址https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取码01jf 文件名bin_video_demo。视频主页https://space.bilibili.com/687803542 四、功能特点 4.1. 基础功能 支持各种音频视频文件格式比如mp3、wav、mp4、asf、rm、rmvb、mkv等。支持本地摄像头设备和本地桌面采集支持多设备和多屏幕。支持各种视频流格式比如rtp、rtsp、rtmp、http、udp等。本地音视频文件和网络音视频文件自动识别文件长度、播放进度、音量大小、静音状态等。文件可以指定播放位置、调节音量大小、设置静音状态等。支持倍速播放文件可选0.5倍、1.0倍、2.5倍、5.0倍等速度相当于慢放和快放。支持开始播放、停止播放、暂停播放、继续播放。支持抓拍截图可指定文件路径可选抓拍完成是否自动显示预览。支持录像存储手动开始录像、停止录像部分内核支持暂停录像后继续录像跳过不需要录像的部分。支持无感知切换循环播放、自动重连等机制。提供播放成功、播放完成、收到解码图片、收到抓拍图片、视频尺寸变化、录像状态变化等信号。多线程处理一个解码一个线程不卡主界面。 4.2. 特色功能 同时支持多种解码内核包括qmedia内核Qt4/Qt5/Qt6、ffmpeg内核ffmpeg2/ffmpeg3/ffmpeg4/ffmpeg5/ffmpeg6、vlc内核vlc2/vlc3、mpv内核mpv1/mp2、mdk内核、海康sdk、easyplayer内核等。非常完善的多重基类设计新增一种解码内核只需要实现极少的代码量就可以应用整套机制极易拓展。同时支持多种画面显示策略自动调整原始分辨率小于显示控件尺寸则按照原始分辨率大小显示否则等比缩放、等比缩放永远等比缩放、拉伸填充永远拉伸填充。所有内核和所有视频显示模式下都支持三种画面显示策略。同时支持多种视频显示模式句柄模式传入控件句柄交给对方绘制控制、绘制模式回调拿到数据后转成QImage用QPainter绘制、GPU模式回调拿到数据后转成yuv用QOpenglWidget绘制。支持多种硬件加速类型ffmpeg可选dxva2、d3d11va等vlc可选any、dxva2、d3d11vampv可选auto、dxva2、d3d11vamdk可选dxva2、d3d11va、cuda、mft等。不同的系统环境有不同的类型选择比如linux系统有vaapi、vdpaumacos系统有videotoolbox。解码线程和显示窗体分离可指定任意解码内核挂载到任意显示窗体动态切换。支持共享解码线程默认开启并且自动处理当识别到相同的视频地址共享一个解码线程在网络视频环境中可以大大节约网络流量以及对方设备的推流压力。国内顶尖视频厂商均采用此策略。这样只要拉一路视频流就可以共享到几十个几百个通道展示。自动识别视频旋转角度并绘制比如手机上拍摄的视频一般是旋转了90度的播放的时候要自动旋转处理不然默认是倒着的。自动识别视频流播放过程中分辨率的变化在视频控件上自动调整尺寸。比如摄像机可以在使用过程中动态配置分辨率当分辨率改动后对应视频控件也要做出同步反应。音视频文件无感知自动切换循环播放不会出现切换期间黑屏等肉眼可见的切换痕迹。视频控件同时支持任意解码内核、任意画面显示策略、任意视频显示模式。视频控件悬浮条同时支持句柄、绘制、GPU三种模式非绝对坐标移来移去。本地摄像头设备支持指定设备名称、分辨率、帧率进行播放。本地桌面采集支持设定采集区域、偏移值、指定桌面索引、帧率、多个桌面同时采集等。还支持指定窗口标题采集固定窗口。录像文件同时支持打开的视频文件、本地摄像头、本地桌面、网络视频流等。瞬间响应打开和关闭无论是打开不存在的视频或者网络流探测设备是否存在读取中的超时等待收到关闭指令立即中断之前的操作并响应。支持打开各种图片文件支持本地音视频文件拖曳播放。视频流通信方式可选tcp/udp有些设备可能只提供了某一种协议通信比如tcp需要指定该种协议方式打开。可设置连接超时时间视频流探测用的超时时间、读取超时时间采集过程中的超时时间。支持逐帧播放提供上一帧/下一帧函数接口可以逐帧查阅采集到的图像。音频文件自动提取专辑信息比如标题、艺术家、专辑、专辑封面自动显示专辑封面。视频响应极低延迟0.2s左右极速响应打开视频流0.5s左右专门做了优化处理。支持H264/H265编码现在越来越多的监控摄像头是H265视频流格式生成视频文件内部自动识别切换编码格式。支持用户信息中包含特殊字符比如用户信息中包含#等字符的视频流播放内置解析转义处理。支持滤镜各种水印及图形效果支持多个水印和图像可以将OSD标签信息和各种图形信息写入到MP4文件。支持视频流中的各种音频格式AAC、PCM、G.726、G.711A、G.711Mu、G.711ulaw、G.711alaw、MP2L2等都支持推荐选择AAC兼容性跨平台性最好。内核ffmpeg采用纯qtffmpeg解码非sdl等第三方绘制播放依赖gpu绘制采用qopenglwidget音频播放采用qaudiooutput。内核ffmpeg和内核mdk支持安卓其中mdk支持安卓硬解码性能非常凶残。可以切换音视频轨道也就是节目通道可能ts文件带了多个音视频节目流可以分别设置要播放哪一个可以播放前设置好和播放过程中动态设置。可以设置视频旋转角度可以播放前设置好和播放过程中动态改变。视频控件悬浮条自带开始和停止录像切换、声音静音切换、抓拍截图、关闭视频等功能。音频组件支持声音波形值数据解析可以根据该值绘制波形曲线和柱状声音条默认提供了声音振幅信号。标签和图形信息支持三种绘制方式绘制到遮罩层、绘制到图片、源头绘制对应信息可以存储到文件。通过传入一个url地址该地址可以带上通信协议、分辨率、帧率等信息无需其他设置。保存视频到文件支持三种策略自动处理、仅限文件、全部转码转码策略支持自动识别、转264、转265编码保存支持指定分辨率缩放或者等比例缩放。比如对保存文件体积有要求可以指定缩放后再存储。支持加密保存文件和解密播放文件可以指定秘钥文本。提供的监控布局类支持64通道同时显示还支持各种异型布局比如13通道手机上6行2列布局。各种布局可以自由定义。支持电子放大在悬浮条切换到电子放大模式在画面上选择需要放大的区域选取完毕后自动放大再次切换放大模式可以复位。各组件中极其详细的打印信息提示尤其是报错信息提示封装的统一打印格式。针对现场复杂的设备环境测试极其方便有用相当于精确定位到具体哪个通道哪个步骤出错。同时提供了简单示例、视频播放器、多画面视频监控、监控回放、逐帧播放、多屏渲染等单独窗体示例专门演示对应功能如何使用。监控回放可选不同厂家类型、回放时间段、用户信息、指定通道。支持切换回放进度。可以从声卡设备下拉框选择声卡播放声音提供对应的切换声卡函数接口。支持编译到手机app使用提供了专门的手机app布局界面可以作为手机上的视频监控使用。代码框架和结构优化到最优性能强悍注释详细持续迭代更新升级。源码支持windows、linux、mac、android等支持各种国产linux系统包括但不限于统信UOS/中标麒麟/银河麒麟等。还支持嵌入式linux。源码支持Qt4、Qt5、Qt6兼容所有版本。 4.3. 视频控件 可动态添加任意多个osd标签信息标签信息包括名字、是否可见、字号大小、文本文字、文本颜色、背景颜色、标签图片、标签坐标、标签格式文本、日期、时间、日期时间、图片、标签位置左上角、左下角、右上角、右下角、居中、自定义坐标。可动态添加任意多个图形信息这个非常有用比如人工智能算法解析后的图形区域信息直接发给视频控件即可。图形信息支持任意形状直接绘制在原始图片上采用绝对坐标。图形信息包括名字、边框大小、边框颜色、背景颜色、矩形区域、路径集合、点坐标集合等。每个图形信息都可指定三种区域中的一种或者多种指定了的都会绘制。内置悬浮条控件悬浮条位置支持顶部、底部、左侧、右侧。悬浮条控件参数包括边距、间距、背景透明度、背景颜色、文本颜色、按下颜色、位置、按钮图标代码集合、按钮名称标识集合、按钮提示信息集合。悬浮条控件一排工具按钮可自定义通过结构体参数设置图标可选图形字体还是自定义图片。悬浮条按钮内部实现了录像切换、抓拍截图、静音切换、关闭视频等功能也可以自行在源码中增加自己对应的功能。悬浮条按钮对应实现了功能的按钮有对应图标切换处理比如录像按钮按下后会切换到正在录像中的图标声音按钮切换后变成静音图标再次切换还原。悬浮条按钮单击后都用名称唯一标识作为信号发出可以自行关联响应处理。悬浮条空白区域可以显示提示信息默认显示当前视频分辨率大小可以增加帧率、码流大小等信息。视频控件参数包括边框大小、边框颜色、焦点颜色、背景颜色默认透明、文字颜色默认全局文字颜色、填充颜色视频外的空白处填充黑色、背景文字、背景图片如果设置了图片优先取图片、是否拷贝图片、缩放显示模式自动调整、等比缩放、拉伸填充、视频显示模式句柄、绘制、GPU、启用悬浮条、悬浮条尺寸横向为高度、纵向为宽度、悬浮条位置顶部、底部、左侧、右侧。 五、相关代码 QListVideoThread * VideoThread::videoThreads; VideoThread *VideoThread::getVideoThread(const WidgetPara widgetPara, const VideoPara videoPara) {//句柄模式不能共用if (!widgetPara.sharedData || widgetPara.videoMode VideoMode_Hwnd) {return NULL;}VideoThread *thread NULL;foreach (VideoThread *videoThread, videoThreads) {//桌面采集永远不共享if (videoThread-getMediaType() MediaType_Screen) {break;}//解析内核和媒体地址一致才能唯一决定一个采集线程if (videoThread-getVideoCore() videoPara.videoCore videoThread-getMediaUrl() videoPara.mediaUrl) {//限定纯音频不用共享if (!videoThread-getOnlyAudio()) {videoThread-refCount;thread videoThread;}break;}}return thread; }bool VideoWidget::init() {//媒体地址不能为空if (videoPara.mediaUrl.isEmpty()) {return false;}//如果没有解码内核则不用继续if (videoPara.videoCore VideoCore_None) {return false;}//初始化参数VideoHelper::initPara(widgetPara, videoPara);//线程正在运行不用继续if (isRunning) {return false;}//句柄模式则句柄控件在前否则遮罩控件在前if (widgetPara.videoMode VideoMode_Hwnd) {coverWidget-stackUnder(hwndWidget);} else {hwndWidget-stackUnder(coverWidget);}//已经存在同名的线程则取同名线程VideoThread *thread VideoThread::getVideoThread(widgetPara, videoPara);if (thread) {isShared true;videoThread thread;//默认音量大小和静音状态取共享线程的widgetPara.soundValue thread-getVolume();widgetPara.soundMuted thread-getMuted();//硬件加速也要取共享线程的hardware thread-getHardware();videoPara.hardware thread-getHardware();} else {//创建新的采集线程videoThread VideoHelper::newVideoThread(hwndWidget, videoPara.videoCore, widgetPara.videoMode);//设置视频通道唯一标识videoThread-setFlag(widgetPara.videoFlag);//加入到采集线程队列if (widgetPara.sharedData) {VideoThread::videoThreads videoThread;}//设置对应参数videoThread-setVideoMode(widgetPara.videoMode);videoThread-setProperty(scaleMode, widgetPara.scaleMode);videoThread-setProperty(sharedData, widgetPara.sharedData);VideoHelper::initVideoThread(videoThread, videoPara);}//绑定信号槽connectThreadSignal();return true; }bool VideoWidget::open(const QString mediaUrl) {//线程正常说明还在运行需要先停止if (videoThread) {this-stop();qApp-processEvents();}//重新初始化和播放videoPara.mediaUrl mediaUrl;if (this-init()) {this-play();return true;} else {return false;} }void VideoWidget::play() {//如果是图片则只显示图片就行image QImage(videoPara.mediaUrl);if (!image.isNull()) {videoThread-setVideoSize(QString(%1x%2).arg(image.width()).arg(image.height()));this-setImage(image);return;}//采用已经存在的采集线程/如果处于解码正常阶段则还要发几个信号通知if (videoThread-getIsOk()) {QMetaObject::invokeMethod(this, receivePlayStart, Qt::DirectConnection, Q_ARG(int, 0));QMetaObject::invokeMethod(videoThread, receiveSizeChanged, Qt::DirectConnection);QMetaObject::invokeMethod(videoThread, receiveDuration, Qt::DirectConnection, Q_ARG(qint64, videoThread-getDuration()));}//已经在运行阶段还要发送已经开始的信号if (videoThread-isRunning()) {isRunning true;QMetaObject::invokeMethod(this, sig_receivePlayStart, Qt::DirectConnection, Q_ARG(int, 0));}//启动播放线程videoThread-play();this-update();//初始化标签信息和图形信息this-osdChanged();this-graphChanged(); }void VideoWidget::stop() {//立即隐藏悬浮条bannerWidget-setVisible(false);//关闭的时候将遮罩控件移到最前hwndWidget-stackUnder(coverWidget);//处于运行状态才可以停止if (videoThread videoThread-isRunning()) {//先判断当前线程的引用计数是0才需要真正停止if (videoThread-refCount 0) {isRunning false;//减少引用计数videoThread-refCount--;//执行停止信号QMetaObject::invokeMethod(this, receivePlayFinsh, Qt::DirectConnection);QMetaObject::invokeMethod(this, sig_receivePlayFinsh, Qt::DirectConnection);//取消信号关联disconnectThreadSignal();} else {//停止播放videoThread-stop();//取消信号关联disconnectThreadSignal();//从队列中移除VideoThread::videoThreads.removeOne(videoThread);//释放线程videoThread-debug(删除线程, );videoThread-deleteLater();}}//复位标志位并将线程置空(没有这个的话可能会出现野指针的情况)isRunning false;isShared false;videoThread NULL;videoPara.reset();AbstractVideoWidget::clear(); }
http://www.pierceye.com/news/776065/

相关文章:

  • 石家庄网站建设接单常见的网络直接营销有哪些
  • 上海网站建设技术托管找合伙人做网站
  • 网站和自媒体都可以做东莞专业营销网站建设推广
  • 毕业设计网站怎么做校园网二手书交易网站建设
  • 网站运营托管协议凡科建设网站还用买服务器吗
  • 黑龙江省建设网官方网站erp系统软件免费版
  • 网站建设案例算命网站百度搜索站长平台网站
  • 手机wap网站模板 带后台thefox wordpress
  • 公司网站建设与设计制作游戏网站的设计方案
  • 移动端网站设计规范程序员帮忙做放贷网站
  • 网站到期查询广西建设信息网
  • 服务器可以放几个网站市场调研的五个步骤
  • 网站前置审批h5页面制作软件thinkphp
  • 企业网站设计调查问卷步骤记录器
  • dw里响应式网站怎么做郑州电力高等专科学校学费多少
  • 用app怎么样建网站深圳专业做网站的
  • 怎样做浏览的网站不被发现互联网营销师报考条件
  • 电子商务网站建设与电子支付网站进不去怎么解决
  • 微信网站模板下载电子商务网站建设的四个步骤
  • 网站内如何做论坛建设网站宝安区
  • 公司网站管理制定的作用网站建设设计文档模板
  • 做网站 附加信息全网整合营销公司
  • 做网站都需要用到什么软件每年网站备案抽查
  • 网站如何做电脑和手机软件ps素材网站大全
  • 佛山网站建设培训高能建站
  • 网站开发的相关技能广州有哪些广告公司
  • jsp网站设计用以前用过的域名做网站
  • 魔兽世界做宏网站家具设计与工程就业前景
  • 网站案例介绍平面设计网址推荐
  • 网站上的验证码怎么做简书 导入 wordpress