背景描述
使用QT创建一个视频窗口,使用WEBRTC协议来接收数据并解码,使用SDL2来渲染YUV数据,其中QT进程和SDL所在的渲染进程是跨进程,当SDL使用"software"驱动渲染时,会出现如果窗口大小发生变化,渲染图像的区域没有随窗口改变而改变,这就导致了窗口的部分区域是透明或者是黑的,总太看起来就想是显示异常。

问题分析
通过分析SDL2的源码,发现当窗口进程和渲染进程跨进程时,SDL2内的SetWindowLongPtr函数不能接管窗口的消息过程,导致窗口的所有消息不能被SDL2获取到,从而不能更新显示的区域,也不能适应窗口的变化。

解决办法
渲染YUV数据时获取窗口的大小,当大小发生变化时,重新创建Texture即可,重点看CWebrtcAdapter::createRender函数。

	struct YUVRender {YUVRender(){clear();}void clear(){window = Q_NULLPTR;render = Q_NULLPTR;texture = Q_NULLPTR;view = Q_NULLPTR;yuvWidth = 0;yuvHeight = 0;wndWidth = 0;wndHeight = 0;observeCount = 0;}SDL_Window *window;SDL_Renderer *render;SDL_Texture *texture;void *view;int yuvWidth;int yuvHeight;int wndWidth;int wndHeight;int observeCount;};QMap< int, QPointer<CWebrtcAdapter> > CWebrtcAdapter::s_mapAdapter;
CWebrtcAdapter::CWebrtcAdapter(QObject *parent): QObject(parent), _peerId(INVALID_PEER_ID), _isAudioOnly(false), _ws(Q_NULLPTR), _timer(Q_NULLPTR), _isConnectedYet(false)
{	_funs.fill(nullptr);_contexts.fill(nullptr);connect(this, &CWebrtcAdapter::localSdpRead, this, &CWebrtcAdapter::handleLocalSdp, Qt::QueuedConnection);
}CWebrtcAdapter::~CWebrtcAdapter()
{stop();
}CWebrtcLibrary * CWebrtcAdapter::lib()
{return CWebrtcLibrary::getInstance();
}void CWebrtcAdapter::localSdpReadyToSend(int peer_connection_id, const char* type, const char* sdp)
{GET_ADAPTER(peer_connection_id);emit adapter->localSdpRead(type, sdp);
}void CWebrtcAdapter::start(const QString &stun, bool isRcvOnly)
{qInfo() << "Start, stun:" << stun << " is receive only:" << isRcvOnly;if (!stun.isEmpty()) {QString tmpStun = QString("stun:%1").arg(stun);std::string stun = tmpStun.toStdString();const char* stuns[1] = { stun.c_str() };qInfo() << "Create peer connection, stun:" << stun.c_str();_peerId = lib()->CreatePeerConnection(stuns, 1, "", "", true);} else {_peerId = lib()->CreatePeerConnection(nullptr, 0, "", "", true);}	if (INVALID_PEER_ID == _peerId) {qCritical() << "Create peer connection fail";return;}addToMap(_peerId);lib()->RegisterOnFailure(_peerId, webrtcFailureCallback);lib()->RegisterOnLocalI420FrameReady(_peerId, localI420FrameCallback);lib()->RegisterOnRemoteI420FrameReady(_peerId, remoteI420FrameCallback);lib()->RegisterOnLocalSdpReadytoSend(_peerId, localSdpReadyToSend);lib()->RegisterOnIceCandiateReadytoSend(_peerId, iceCandiateReadyToSend);if (!isRcvOnly) {lib()->AddStream(_peerId, _isAudioOnly);}
}void CWebrtcAdapter::stop()
{sendStopByWebsocket();if (_timer->isActive()) {_timer->stop();}if (INVALID_PEER_ID != _peerId) {lib()->ClosePeerConnection(_peerId);removeFromMap(_peerId);_peerId = INVALID_PEER_ID;}destoryRender(_LocalYuvRender);destoryRender(_remoteYuvRender);clearCallback();_ws->close();
}void CWebrtcAdapter::localI420FrameCallback(int peer_connection_id, const uint8_t* data_y,const uint8_t* data_u,const uint8_t* data_v,const uint8_t* data_a,int stride_y,int stride_u,int stride_v,int stride_a,uint32_t width,uint32_t height)
{
#ifdef TEST_WIRTE_YUV_LOCALFILE *f = fopen("C:\\local.yuv", "ab+");int y_size = stride_y*height;fwrite(data_y, y_size, 1, f);int u_size = stride_u*height / 2;fwrite(data_u, u_size, 1, f);int v_size = stride_v*height / 2;fwrite(data_v, v_size, 1, f);fclose(f);FILE *f1 = fopen("C:\\local.yuv.size", "ab+");QString size = QString("w:%1 h:%2 stride_y:%3 stride_u:%4 stride_v:%5\n").arg(width).arg(height).arg(stride_y).arg(stride_u).arg(stride_v);fwrite(size.toLocal8Bit(), size.toLocal8Bit().size(), 1, f1);fclose(f1);
#endifGET_ADAPTER(peer_connection_id);adapter->createRender(width, height, true);adapter->render(adapter->_LocalYuvRender, data_y, data_u, data_v, stride_y, stride_u, stride_v);
}void CWebrtcAdapter::remoteI420FrameCallback(int peer_connection_id,const uint8_t* data_y, const uint8_t* data_u, const uint8_t* data_v, const uint8_t* data_a, int stride_y, int stride_u, int stride_v, int stride_a, uint32_t width, uint32_t height)
{
#ifdef TEST_WIRTE_YUV_REMOTEFILE *f = fopen("C:\\remote.yuv", "ab+");int y_size = stride_y*height;fwrite(data_y, y_size, 1, f);int u_size = stride_u*height / 2;fwrite(data_u, u_size, 1, f);int v_size = stride_v*height / 2;fwrite(data_v, v_size, 1, f);fclose(f);FILE *f1 = fopen("C:\\remote.yuv.size", "ab+");QString size = QString("w:%1 h:%2 stride_y:%3 stride_u:%4 stride_v:%5\n").arg(width).arg(height).arg(stride_y).arg(stride_u).arg(stride_v);fwrite(size.toLocal8Bit(), size.toLocal8Bit().size(), 1, f1);fclose(f1);
#endifGET_ADAPTER(peer_connection_id);adapter->createRender(width, height, false);adapter->render(adapter->_remoteYuvRender, data_y, data_u, data_v, stride_y, stride_u, stride_v);
}inline void CWebrtcAdapter::createRender(int w, int h, bool isLocal)
{YUVRender &yuvRender = isLocal ? _LocalYuvRender : _remoteYuvRender;bool isResolutionChanged = w != yuvRender.yuvWidth || h != yuvRender.yuvHeight;if (!isResolutionChanged && !determineIsWndSizeChanged(yuvRender) ) {return;}if (Q_NULLPTR == yuvRender.view) {qWarning() << "Create YUV render, view is null";return;}if (w <= 0 || h <= 0) {qWarning() << "Create YUV render, illegal picture width or height";return;}QSize wndSize = getWindowSize(yuvRender.view);if (Q_NULLPTR == yuvRender.window) {yuvRender.window = SDL_CreateWindowFrom(yuvRender.view);qInfo() << "Create a window, size:" << wndSize << "point:" << yuvRender.window << "is local:" << isLocal;if (Q_NULLPTR == yuvRender.window) {qCritical() << "SDL_CreateWindowFrom fail with error description:" << SDL_GetError();return;}} else {if (yuvRender.observeCount > 0) {qInfo() << "Update window size:" << wndSize << "is local:" << isLocal;SDL_SetWindowSize(yuvRender.window, wndSize.width(), wndSize.height());}}if (Q_NULLPTR == yuvRender.render) {yuvRender.render = SDL_CreateRenderer(yuvRender.window, -1, 0);}//Query driver informationSDL_RendererInfo renderer;if (0 == SDL_GetRendererInfo(yuvRender.render, &renderer)) {const char* currentDriver = SDL_GetCurrentVideoDriver();qInfo() << "SDL, driver:" << (Q_NULLPTR != currentDriver ? currentDriver : "unknown") << "renderer:" << renderer.name;//If need observe window size, set variable observeCount larger than zero.yuvRender.observeCount = isDriverNeedObserveWndSize(renderer.name) ? 1 : 0;} else {qWarning() << "SDL, Query driver and renderer failed";}//Attention!//Texture need to destroy first if it is not NULL, because when resolution changed, need recreate itif (Q_NULLPTR != yuvRender.texture) {SDL_DestroyTexture(yuvRender.texture);}	yuvRender.texture = SDL_CreateTexture(yuvRender.render, SDL_PIXELFORMAT_YV12, SDL_TEXTUREACCESS_STREAMING, w, h);yuvRender.yuvWidth = w;yuvRender.yuvHeight = h;yuvRender.wndWidth = wndSize.width();yuvRender.wndHeight = wndSize.height();if (Q_NULLPTR != _funs.at(RegResolution) && isResolutionChanged) {qInfo() << "Resolution notify, width:" << w << "height:" << h << "is local:" << isLocal;reinterpret_cast<resolutionCallback>(_funs.at(RegResolution))(w, h, isLocal, _contexts.at(RegResolution));}
}inline void CWebrtcAdapter::render(YUVRender &render,const uint8_t* data_y, const uint8_t* data_u, const uint8_t* data_v,int stride_y, int stride_u, int stride_v)
{if (Q_NULLPTR == render.texture || Q_NULLPTR == render.render) {qWarning() << "Render, texture or render is null";return;}SDL_UpdateYUVTexture(render.texture, Q_NULLPTR, data_y, stride_y, data_u, stride_u, data_v, stride_v);SDL_RenderCopy(render.render, render.texture, Q_NULLPTR, Q_NULLPTR);SDL_RenderPresent(render.render);
}void CWebrtcAdapter::destoryRender(YUVRender &render)
{if (nullptr != render.texture) {SDL_DestroyTexture(render.texture);}if (nullptr != render.render) {SDL_DestroyRenderer(render.render);}if (Q_NULLPTR != render.window) {SDL_DestroyWindow(render.window);}render.clear();
}void CWebrtcAdapter::setLocalView(void *view)
{_LocalYuvRender.view = view;
}void CWebrtcAdapter::setRemoteView(void *view)
{_remoteYuvRender.view = view;
}void CWebrtcAdapter::addToMap(int peer_id)
{s_mapAdapter.insert(peer_id, QPointer<CWebrtcAdapter>(this));
}void CWebrtcAdapter::removeFromMap(int peer_id)
{s_mapAdapter.remove(peer_id);
}void CWebrtcAdapter::sendStopByWebsocket()
{if (_startCmd.isEmpty()) {return;}QJsonObject obj = QJsonDocument::fromJson(_startCmd.toUtf8()).object();if (!obj.isEmpty()) {obj[KEY(RequestType)] = "stop";sendToWsServer(toJson(obj));}_startCmd.clear();
}void CWebrtcAdapter::registerCallback(RegisterType type, void* fun, void *context)
{_funs[type] = fun;_contexts[type] = context;
}inline void CWebrtcAdapter::clearCallback()
{_funs.fill(nullptr);
}bool CWebrtcAdapter::hasNormallyStopped() const
{return INVALID_PEER_ID == _peerId;
}inline bool CWebrtcAdapter::isDriverNeedObserveWndSize(const QString &driverName) const
{return 0 == driverName.compare("software", Qt::CaseInsensitive);
}bool CWebrtcAdapter::determineIsWndSizeChanged(YUVRender &yuvRender)
{//If driver is "software", need observe windows size//Otherwise, picture will display without fill the windowbool isWndSizeChanged = false;if (yuvRender.observeCount > 0 && Q_NULLPTR != yuvRender.view) {++yuvRender.observeCount;if (yuvRender.observeCount > WND_SIZE_OBSERVER_SPAN) {yuvRender.observeCount = 1;isWndSizeChanged = !isWndSizeEqual(yuvRender);}}return isWndSizeChanged;
}inline QSize CWebrtcAdapter::getWindowSize(void *view) const
{
#ifdef WIN32RECT rect;::GetWindowRect((HWND)view, &rect);return QSize{ rect.right - rect.left + 1, rect.bottom - rect.top + 1 };
#elsereturn QSize();
#endif
}inline bool CWebrtcAdapter::isWndSizeEqual(const YUVRender &yuvRencer) const
{return getWindowSize(yuvRencer.view) == QSize(yuvRencer.wndWidth, yuvRencer.wndHeight);
}
查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. C++中引用类型和目标变量类型不一致,会发生什么?

    引用类型和目标变量类型不一致,会发生什么? C++中,引用类型和目标类型要保持一致,但是如果是常引用,当和目标类型不一致时,编译器是不会报错的 #include <iostream> using namespace std; int main(void){int num = 10;char& r1 = num; //编译器会报错const ch…...

    2024/4/16 10:31:44
  2. 盒子水平垂直居中的几种方式

    盒子水平居中的四种方式 第一种 当子盒子有固定宽高的时候这样来使用 <style>.father{width: 500px;height: 500px;background-color: #ccc;position: relative;}.child{width: 200px;height: 200px;background-color: red;position: absolute;top: 0;bottom: 0;left: 0;…...

    2024/4/24 20:40:46
  3. yum search

    yum search xxxyum list lksctp* #查看相关的可用包...

    2024/4/25 0:04:06
  4. git 转移项目的操作流程

    Git工程迁移方法总结 Git最近准备迁移一下位置,这里采用命令行的方式,做如下操作。 1.git init 初始化git仓库,这个时候发现本地文件夹多了个.git的文件夹。 2.git remote add-url origin 增加资源库地址 3.git remote set-url origin 关联资源库地址 4.接下来面对两种情况…...

    2024/5/2 13:16:54
  5. css3实现动画

    链接地址可参考动画 http://wanlimm.com/77201809146901.html 注意卡顿问题。 后续再补充文档...

    2024/4/9 17:01:50
  6. js设置cookie和获取cookie

    //设置cookie function setCookie(name, value) {document.cookie = name + "=" + escape(value) + "; path=/"; }//获取cookie function getCookie(name) {var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");if (arr = d…...

    2024/4/25 6:03:38
  7. C++柔性数组

    柔性数组我认为就是动态数组,在C++中,定义柔性数组需要两个步骤: 1.定义一个结构体 2.在结构体最后一个元素定义一个没有长度的数组 下面的b就是一个柔性数组,如果把b放到a的上面是会报错的 struct MyStruct { int a;int b[]; }执行下面代码,会打印出4,因为4是int类型a的…...

    2024/3/29 7:38:37
  8. anaconda导入库方法

    下载好的anaconda后 打开anaconda prompt 输入conda list 可以显示已有的所有库这一步可有可无。 1.search自己需要的库 我的conda环境里原来是没有tensorflow库的 现在我想要下载它输入 anaconda search -t conda [库]然后找到第一个库的名字 2.show如何下载 输入conda show […...

    2024/4/24 4:21:14
  9. 蓝桥杯:数的划分 记忆搜索解法

    蓝桥杯:数的划分 记忆搜索解法 问题描述 一个正整数可以划分为多个正整数的和,比如n=3时:3;1+2;1+1+1;共有三种划分方法。给出一个正整数,问有多少种划分方法。 输入格式一个正整数n 输出格式一个正整数,表示划分方案数 样例输入3样例输出3数据规模和约定n<=100 …...

    2024/4/25 17:14:00
  10. Mac下搭建Android开发环境

    一、Java环境变量配置1、java jdk mac 下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html(选择MacOS版本)2、配置jdk环境1)在Terminal中 执行命令,添加以下配置2)再使用命令 source 更新文件,使之生效注:这个命令可以查看到真实…...

    2024/4/25 21:08:46
  11. PAT乙级1011

    开long long,if判断,定义个计数器#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std;int main() {int T;cin>>T;long long i=0;while(T--){i++;long long a,b,c;cin>>a>>b>…...

    2024/3/29 7:38:33
  12. 10行代码动态展示权游

    下载、处理人物关系数据R语言人物关系图插件简介nodes <- data.frame(id = 1:10, label = paste("Node", 1:10), # add labels on nodesgroup = c("GrA", "GrB"), # ad…...

    2024/3/29 7:38:33
  13. 虚幻4创建旗帜和随机风力

    建个面片作为骨架网格体导入引擎(静态网格用不了布料系统)将材质设为双面渲染打开网格体,进入片段选择,右键从分段创建布料数据,再右键应用布料数据,激活布料绘制与旗杆连接处的顶点需要固定则设为0,绘制过程中按H键可以实时预览效果添加一个风场到场景进入关卡蓝图,新建"…...

    2024/3/29 12:53:27
  14. typescript class修饰符public、private、protected、static、abstract

    class修饰符的使用及区别public、private、protected、static、abstractpublic:可以继承、实例化// public可以继承、实例化 class Person {public name: string;constructor(thename: string) {this.name = thename;} } class Jack extends Person {age: number;constructor(…...

    2024/3/29 12:53:20
  15. highcharts 设置柱子之间的距离 柱子宽度

    plotOption : { column : { // x轴每个点只用一个柱,则这个属性设置的是相邻的两个点的柱之间的间距。 // 如果x轴每个点有2个柱,则这个属性设置的是左侧点的右柱与右侧点的左柱之间的间距。 // 0.5的含义是,如果x轴长100px,则间距是100*0.5=50px pointPadding : 0.5 // 如…...

    2024/4/16 6:01:46
  16. vue-devtools下载,安装,使用

    如果想在所有浏览器总是用vue-devtools,那么操作如下步骤下载,安装,使用:百度云盘下载链接: https://pan.baidu.com/s/1BUQEeCmz3PDTvOGDy-dtMQ 提取码: e9fd安装工具// 全局安装,也可本地安装 npm install -g @vue/devtools运行vue-devtools // 适用于全局安装该指令会打开…...

    2024/4/26 1:16:41
  17. zigbee 源码 03-烟雾传感器MQ-2

    物联网开发物联网开发手册,从嵌入式开发到服务器,手机APP旗点9.90去订阅03_ZigBee 传感器组网——烟雾传感器 实验现象:烟雾传感器跟光敏传感器检测方法类似;终端节点采集烟雾信号,与 协调器组网后把采集的数据发送给协调器,协调器接收后串口打印输出。 传感器介绍: 烟雾…...

    2024/4/30 13:20:51
  18. Python 1.人脸识别 OpenCV Linux

    转自https://blog.csdn.net/chen801090/article/details/95072592,原文是对黄家驹和黄家强识别,不同之处本文换为万茜和江疏影,自行脑补为啥选她们吧。。。另外添上识别器在链接里一块下载(资源还未审核),别的没啥不一样,就是觉得有用放自己博客里吧,另外看评论说上面链…...

    2024/3/29 12:53:15
  19. 微人事第四天:跨域问题

    要知道什么是跨域问题首先要了解同源策略: 很多人对跨域有一种误解,以为这是前端的事,和后端没关系,其实不是这样的,说到跨域,就不得不说说浏览器的同源策略。 同源策略是由 Netscape 提出的一个著名的安全策略,它是浏览器最核心也最基本的安全功能,现在所有支持 JavaS…...

    2024/4/25 0:37:34
  20. 构建netcore项目时,Debug文件夹下多一个netcoreapp文件夹的解决办法

    场景:构建netcore 2.1项目,debug文件夹下多出一个netcoreapp2.1的文件夹解决办法:编辑.csproj文件,在<TargetFramework>netcoreapp2.1</TargetFramework>后加入“是否追加目标框架至输出文件夹”即可。<AppendTargetFrameworkToOutputPath>false</App…...

    2024/3/29 12:53:13

最新文章

  1. 【Web】D^3CTF之浅聊d3pythonhttp——TE-CL请求走私

    目录 step0 题目信息 step1 jwt空密钥伪造 step1.5 有关TE&CL的lab step2 TE-CL请求走私 payload1 payload2 step0 题目信息 注意到题目源码前端是flask写的&#xff0c;后端是web.py写的 frontend from flask import Flask, request, redirect, render_templat…...

    2024/5/2 17:00:08
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. MongoDB初探:安装与图形化界面保姆级使用指南

    文章目录 前言一、MongoDB下载安装下载解压配置环境变量打开mongoDB 二、配置本地MongoDB服务创建文件下载服务测试服务 三、图形化界面Compass GUINavicat GUI 总结 前言 MongoDB是一种流行的开源、面向文档的NoSQL数据库程序。与传统的关系型数据库不同&#xff0c;MongoDB将…...

    2024/5/1 10:20:40
  4. 最新在线工具箱网站系统源码

    内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 系统内置高达72种站长工具、开发工具、娱乐工具等功能。此系统支持本地调用API&#xff0c;同时还自带免费API接口&#xff0c; 是一个多功能性工具程序&#xff0c;支持后台管理、上…...

    2024/5/1 13:29:34
  5. DM数据库状态

    DM 数据库包含以下几种状态&#xff1a; 配置状态&#xff08;MOUNT&#xff09;&#xff1a; 不允许访问数据库对象&#xff0c;只能进行控制文件维护、归档配置、数据库模式修改等操作&#xff1b;打开状态&#xff08;OPEN&#xff09;&#xff1a; 不能进行控制文件维护、…...

    2024/5/1 10:53:13
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/2 16:16:39
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/2 9:28:15
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/2 15:04:34
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/2 9:07:46
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57