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

山东省建设工程领域挂证存颖网站手机报价大全2021中关村

山东省建设工程领域挂证存颖网站,手机报价大全2021中关村,wordpress 去掉rss,邯郸做网站外包前言 本播放器在VS2019下开发,使用ffmpegD3D实现视频播放渲染功能。同时本播放器支持录像功能、截图功能、音视频播放功能、码流信息显示、电子放大功能等。D3D的渲染同时支持surface和texture两种方式,电子放大功能是在D3D Texture方式下进行实现。以下…

前言

    本播放器在VS2019下开发,使用ffmpeg+D3D实现视频播放渲染功能。同时本播放器支持录像功能、截图功能、音视频播放功能、码流信息显示、电子放大功能等。D3D的渲染同时支持surface和texture两种方式,电子放大功能是在D3D Texture方式下进行实现。以下为该功能的一些核心代码,具体可以通过本文末的链接进行工程源码下载。

一、播放器电子放大功能操作

    步骤一:播放RTSP 视频流后,点击开启电子放大功能按钮,如下图:

在这里插入图片描述

    步骤二:点击按钮后,视频上会出现电子放大的变倍信息,本功能支持鼠标滚轮进行图形放大与缩小,也支持鼠标拖动视频进行显示,如下图:

在这里插入图片描述

    步骤三:鼠标滚轮操作电子放大的放大缩小功能,如下图:

在这里插入图片描述

    步骤四:按住鼠标左键后,可以拖动视频进行显示,如下图:

在这里插入图片描述

    步骤五:点击关闭电子放大按钮后,恢复正常显示:

在这里插入图片描述

二、电子放大相关源码

CVideoPlayer鼠标事件:

void CVideoPlayer::OnLButtonDown(UINT nFlags, CPoint point)
{myprint("OnLButtonDown");SetFocus();if (m_bDigitalZoom) // Digital Zoom{m_D3DRender.SetStartPt(point);m_bLBtnDown = true;}CStatic::OnLButtonDown(nFlags, point);
}void CVideoPlayer::OnLButtonUp(UINT nFlags, CPoint point)
{m_bLBtnDown = false;ReleaseCapture();
}BOOL CVideoPlayer::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{    myprint("OnMouseWheel");CRect rcClient;GetClientRect(&rcClient);CPoint ptTemp = pt;::ScreenToClient(m_hWnd, &ptTemp);if (!PtInRect(&rcClient, ptTemp))return FALSE;m_ptWheel = pt;::ScreenToClient(m_hWnd, &m_ptWheel);if (m_bDigitalZoom){zDelta /= WHEEL_DELTA;myprint("OnMouseWheel zDelta:%d", zDelta);if (zDelta > 0){for (short i = 0; i < zDelta; i++)m_D3DRender.ZoomOut();}else{for (short i = 0; i > zDelta; i--)m_D3DRender.ZoomIn();}return TRUE;}return FALSE;
}void CVideoPlayer::OnMouseMove(UINT nFlags, CPoint point)
{if (m_bPlaying == false)return;SetFocus();if (m_bLBtnDown && m_bDigitalZoom){CRect rc;GetClientRect(&rc);m_D3DRender.MoveToPtStart(point, rc);}CStatic::OnMouseMove(nFlags, point);
}

CD3DRender处理:

//zoom
void CD3DRender::ZoomIn()
{m_Radius += m_RadiusFirst / DEFAULT_ZOOM_TIMES;myprint("ZoomIn m_RadiusFirst:%lf m_Radius:%lf\n", m_RadiusFirst, m_Radius);if (m_Radius >= DEFAULT_ZOOM_TIMES){m_Radius = DEFAULT_ZOOM_TIMES;}D3DXVECTOR3 position(-x_curCam, y_curCam, sinf(m_Angle) * m_Radius);D3DXVECTOR3 target(-x_curCam, y_curCam, 0.0f);D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);D3DXMATRIX V;D3DXMatrixLookAtLH(&V, &position, &target, &up);m_pDirect3DDevice->SetTransform(D3DTS_VIEW, &V);
}void CD3DRender::ZoomOut()
{m_Radius -= m_RadiusFirst / DEFAULT_ZOOM_TIMES;myprint("ZoomOut m_RadiusFirst:%lf m_Radius:%lf\n", m_RadiusFirst, m_Radius);if (m_Radius <= 1.1f){m_Radius = 1.1f;}D3DXVECTOR3 position(-x_curCam, y_curCam, sinf(m_Angle) * m_Radius);D3DXVECTOR3 target(-x_curCam, y_curCam, 0.0f);D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);D3DXMATRIX V;D3DXMatrixLookAtLH(&V, &position, &target, &up);m_pDirect3DDevice->SetTransform(D3DTS_VIEW, &V);
}void CD3DRender::ResetZoom()
{x_Cam = x_curCam = 0;y_Cam = y_curCam = 0;m_Radius = m_RadiusFirst;m_Angle = m_AngleFirst;D3DXVECTOR3 position(cosf(m_Angle) * m_Radius, 0.0f, sinf(m_Angle) * m_Radius);D3DXVECTOR3 target(0.0f, 0.0f, 0.0f);D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);D3DXMATRIX V;D3DXMatrixLookAtLH(&V, &position, &target, &up);m_pDirect3DDevice->SetTransform(D3DTS_VIEW, &V);
}HRESULT CD3DRender::AppendZoomTextInfo(TCHAR* sText, CRect rcText) 
{my_mutex_lock(m_pDrawMutex);memset(&m_DigZoomInfo, 0, sizeof(StreamInfo_t));_sntprintf_s(m_DigZoomInfo.sText, sizeof(m_DigZoomInfo.sText), sizeof(m_DigZoomInfo.sText) - 1, "%s", sText);m_DigZoomInfo.rcText.top = rcText.top;m_DigZoomInfo.rcText.left = rcText.left;m_DigZoomInfo.rcText.right = rcText.right;m_DigZoomInfo.rcText.bottom = rcText.bottom;my_mutex_unlock(m_pDrawMutex);return 0;
}HRESULT CD3DRender::ClearZoomTextInfo()
{my_mutex_lock(m_pDrawMutex);memset(&m_DigZoomInfo, 0, sizeof(StreamInfo_t));my_mutex_unlock(m_pDrawMutex);return 0;
}void CD3DRender::D3DDrawZoomText()
{my_mutex_lock(m_pDrawMutex);m_pD3DFont->DrawText(NULL, m_DigZoomInfo.sText, -1, &m_DigZoomInfo.rcText, DT_LEFT/*DT_CENTER | DT_VCENTER*/, D3DCOLOR_XRGB(220, 20, 60));my_mutex_unlock(m_pDrawMutex);
}void CD3DRender::SetStartPt(::CPoint pt)
{pt_start = pt;x_Cam = x_curCam;y_Cam = y_curCam;
}void CD3DRender::MoveToPtStart(::CPoint pt, CRect rc)
{float x = x_Cam + 40.0f * ((float)m_Radius / 20.0f) * (float)(pt.x - pt_start.x) / (float)(rc.right - rc.left);float y = y_Cam + 40.0f * ((float)m_Radius / 20.0f) * (float)(pt.y - pt_start.y) / (float)(rc.bottom - rc.top);x_curCam = x;y_curCam = y;myprint("position( %f, %f, %f)  x_Cam = %f, y_Cam = %f\n", x, y, sinf(m_Angle) * m_Radius, x_Cam, y_Cam);myprint("rc(%d, %d, %d, %d)", rc.left, rc.top, rc.right, rc.bottom);D3DXVECTOR3 position(-x, y, sinf(m_Angle) * m_Radius);D3DXVECTOR3 target(-x, y, 0.0f);D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);D3DXMATRIX V;D3DXMatrixLookAtLH(&V, &position, &target, &up);m_pDirect3DDevice->SetTransform(D3DTS_VIEW, &V);
}

三、相关下载

链接1: 可执行exe下载
链接2: 播放器工程源码下载

http://www.yayakq.cn/news/43168/

相关文章:

  • 企业网站建设很有必要PHP网站开发项目式教程
  • 财务部官方网站经济建设司衡阳网站页面设计公司
  • 沈阳鹊起网站建设小程序制作免费吗
  • 要如何做才能拥有自己的网站呢运用.net做网站
  • 中国建设银行注册网站用户名怎么填精品网站建设费用 干净磐石网络
  • 一定得做网站认证天河岗顶棠下上社网站建设
  • 勾线外包网站利用代码如何做网站
  • 泰州做网站多少钱东营建设网站公司
  • 设置网站404页面网站备案到公司
  • 市场营销网站建设湖南做网站 安全还踏实磐石网络
  • 电子商务网站开发进什么科目电商代运营公司排名
  • 外贸展示型网站建设公司在哪里购买虚拟空间建设网站
  • 云南能投基础设施投资开发建设有限公司网站网站权重转移做排名
  • 珠宝 网站模板上海有名网站建站开发公司
  • 网站开发模块wordpress中级教程
  • 小红书网站开发费用课程平台网站建设报价
  • 什么做电子书下载网站好什么是网络营销4c理论
  • 网站关键词工具有哪些学生怎样做网站
  • 门户网站建设和检务公开整改昆明企业网站模板建站
  • 烟台城乡建设学校官方网站google play下载安装
  • 网站建设怎么弄轮换图片电子商务包括哪些
  • 中山做网站沈阳seo网站推广
  • 商务网站建设步骤有几个php与python做网站
  • 内江市网站建设培训国际贸易网站建设 中企动力湖北
  • 网站开发 精品课程青岛做网站企业排名
  • 手机个人简历模板下载网站模板360信息流广告平台
  • 嘉兴网站建设外包公司教育网站制作哪家服务好
  • 网站备案管理系统网站免费功能网站
  • 免费表格模板网站在线音乐网站开发php
  • 境内境外网站区别汕头市企业网站建设服务机构