怎么创建公司的个人网站ps做的网站

news/2025/10/7 12:54:20/文章来源:
怎么创建公司的个人网站,ps做的网站,企业网站建设浩森宇特,腾讯企业邮箱浙江服务中心在实现播放器的时候#xff0c;我们需要捕获键盘、鼠标事件进行视频快进、快退#xff0c;或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下#xff0c;在使用libVLC库的时候#xff0c;我们无法捕获这些事件#xff0c;因为我们将Qt的视频窗口传递给了libVLC。…在实现播放器的时候我们需要捕获键盘、鼠标事件进行视频快进、快退或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下在使用libVLC库的时候我们无法捕获这些事件因为我们将Qt的视频窗口传递给了libVLC。 libvlc_media_player_set_hwnd(vlc_mediaPlayer, (void *)ui.widgetShow-winId()); 但是libVLC提供了两个接口使得忽略了对鼠标键盘事件的处理让事件返回到原始Qt的widget上。 libvlc_video_set_mouse_input(vlc_mediaPlayer, 0);libvlc_video_set_key_input(vlc_mediaPlayer, 0); 好了知道了如何操作了之后下面开始实现代码。 首先打开文件的时候禁用鼠标、键盘事件并且设置视频窗口为Qt的Widget控件libvlc_media_player_set_hwnd。 void showWidget::slotOpenFile() {/*选择文件*/QString filename QFileDialog::getOpenFileName(this, 选择打开的文件, D:/, tr(*.*));std::replace(filename.begin(), filename.end(), QChar(/), QChar(\\));vlc_base libvlc_new(0, NULL);vlc_media libvlc_media_new_path(vlc_base, filename.toUtf8().data());if (!vlc_media) {return;}// 创建libvlc实例和媒体播放器vlc_mediaPlayer libvlc_media_player_new_from_media(vlc_media);if (!vlc_mediaPlayer) {return;}// 等待元数据加载完成libvlc_media_parse(vlc_media);m_defalutRate libvlc_video_get_aspect_ratio(vlc_mediaPlayer);m_defalutCrop libvlc_video_get_crop_geometry(vlc_mediaPlayer);libvlc_video_set_mouse_input(vlc_mediaPlayer, 0);libvlc_video_set_key_input(vlc_mediaPlayer, 0);// 获取各种元数据const char *title libvlc_media_get_meta(vlc_media, libvlc_meta_Title);const char *artist libvlc_media_get_meta(vlc_media, libvlc_meta_Artist);const char *album libvlc_media_get_meta(vlc_media, libvlc_meta_Album);const char *url libvlc_media_get_meta(vlc_media, libvlc_meta_URL);const char *date libvlc_media_get_meta(vlc_media, libvlc_meta_Date);const char *lang libvlc_media_get_meta(vlc_media, libvlc_meta_Language);int duration libvlc_media_get_duration(vlc_media); // 获取时长单位毫秒qDebug(Title: %s, title ? title : N/A);qDebug(Artist: %s, artist ? artist : N/A);qDebug(Album: %s, album ? album : N/A);qDebug(Duration: %d ms, duration);qDebug(url: %s, url ? url : N/A);qDebug(date: %s, date ? date : N/A);qDebug(lang: %s, lang ? lang : N/A);libvlc_media_track_t **tracks;int track_count libvlc_media_tracks_get(vlc_media,tracks);for (unsigned i 0; i track_count; i) {libvlc_media_track_t* track tracks[i];// 显示轨道信息printf(Track #%u: %s\n, i, track-psz_description);// 这里可以获取到每一个轨道的信息比如轨道类型 track-i_type// 可能是 libvlc_track_video, libvlc_track_audio 或者 libvlc_track_text (字幕)if (track-i_type libvlc_track_video) {// 处理视频轨道信息qDebug(width %d,track-video-i_width);qDebug(height %d, track-video-i_height);qDebug(rate_num %d, track-video-i_frame_rate_num);qDebug(rate_den %d, track-video-i_frame_rate_den);}else if (track-i_type libvlc_track_audio) {// 处理音频轨道信息qDebug(channels %d, track-audio-i_channels);qDebug(rate %d, track-audio-i_rate);}else if (track-i_type libvlc_track_text) {// 处理字幕轨道信息}}//获取事件管理器libvlc_event_manager_t *em libvlc_media_player_event_manager(vlc_mediaPlayer);// 注册事件监听器libvlc_event_attach(em, libvlc_MediaPlayerTimeChanged, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerEndReached, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerStopped, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerPlaying, vlcEvents, this);libvlc_event_attach(em, libvlc_MediaPlayerPaused, vlcEvents, this);libvlc_media_player_set_hwnd(vlc_mediaPlayer, (void *)ui.widgetShow-winId());QTimer::singleShot(1000, this, showWidget::slotPlay); } 然后鼠标右键显示菜单 代码实现 //.hQMenu *m_menu nullptr;QAction *m_video nullptr;QAction *m_scaleAction nullptr; //缩放QAction *m_aspectRatioAction nullptr; //宽高比QAction *m_cropAction nullptr; //裁剪QMenu *m_videoMenu nullptr;//.cpp//总菜单m_menu new QMenu(this);m_video m_menu-addAction(视频);//视频菜单m_videoMenu new QMenu(this);m_scaleAction m_videoMenu-addAction(缩放);m_aspectRatioAction m_videoMenu-addAction(宽高比);m_cropAction m_videoMenu-addAction(裁剪);m_video-setMenu(m_videoMenu);//宽高比菜单m_aspectRatioMenu new QMenu(this);m_aspectRatioAction-setMenu(m_aspectRatioMenu); 重写鼠标和键盘事件。 protected:virtual void mousePressEvent(QMouseEvent *event);virtual void mouseDoubleClickEvent(QMouseEvent *event);virtual void keyPressEvent(QKeyEvent *event); 鼠标双击全屏。 void showWidget::mouseDoubleClickEvent(QMouseEvent *event) {if (this-isFullScreen()){this-showNormal();}else{this-showFullScreen();} }键盘事件调节W、S键音量大小和space键暂停和播放。 void showWidget::keyPressEvent(QKeyEvent *event) {if (!vlc_mediaPlayer)return;int value ui.hSliderVolumn-value();if (event-key() Qt::Key_W) //添加音量{qDebug() up;slotValueChanged(value10);}else if (event-key() Qt::Key_S) //减小音量{slotValueChanged(value - 10);}else if (event-key() Qt::Key_Space){if (vlc_mediaPlayer libvlc_media_player_get_state(vlc_mediaPlayer) libvlc_Playing){libvlc_media_player_pause(vlc_mediaPlayer);}else if (vlc_mediaPlayer libvlc_media_player_get_state(vlc_mediaPlayer) libvlc_Paused){libvlc_media_player_play(vlc_mediaPlayer);}} }void showWidget::slotValueChanged(int value) {if (vlc_mediaPlayer)libvlc_audio_set_volume(vlc_mediaPlayer, value); } 鼠标点击弹出菜单。 void showWidget::mousePressEvent(QMouseEvent *event) {switch (event-button()){case Qt::RightButton://this-setWindowState(Qt::WindowMinimized);m_menu-exec(event-globalPos());break;default:QWidget::mousePressEvent(event);} } 更多参考 libVLC 事件机制-CSDN博客 libVLC windows开发环境搭建-CSDN博客 https://sunnnnnn666.blog.csdn.net/article/details/136854500 libVLC 元数据-CSDN博客 libVLC 添加图片和文本水印-CSDN博客 https://sunnnnnn666.blog.csdn.net/article/details/136920169 https://sunnnnnn666.blog.csdn.net/article/details/137023036

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

简单工厂模式 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

1.springmvc基础入门(一) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

爱,在行动中生长,我们因爱而变得辽阔——《岛上书店》读后感

看完了《岛上书店》,合上书最想说的就是:这书真好看。不是那种需要正襟危坐才能读下去的“大作”,更像是在一个闲适的下午,听朋友娓娓道来一个发生在小岛上的,关于一群普通人如何因为书与爱而彼此牵连的故事。 全…

杭州做商务网站网站建设企业实践总结

Windows Server 2012学习 用windows系统来架构网络,以便将资源共享给网络上的用户。 windows的网络架构大致可以分为工作组(workgroup)架构,域(domain)架构与前两者的混合架构。 一、工作组架构为分布式…

做网站的流程视频教程网站开发设计课程

题目 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10 ​100。 输出格式: 在一行内输出 n 的各位数字之和…

东营免费建网站幼儿活动设计方案模板

一、关于效率和适用范围 尽管官方承诺Json格式字段采用了空间换时间的策略,比Text类型来存储Json有大幅度的效率提升。但是Json格式的处理过程仍然效率不及传统关系表,所以什么时候用Json格式字段尤为重要。 只有我们确定系统已经能精确定位到某一行&am…

做一个网站 如何盈利制作网站源码软件

前言 最近在做项目过程中,我们注意到当考虑车体轮廓去进行全局路径规划(如混合A*算法),如果仅仅将障碍物点云数据中得每一个点只当成点,会造成较大的计算时间,如若将点云聚类成圆形 线型 多边形障碍物 会提高计算效率,这是其中一个原因,另一个原因是,我们需要知道障碍…

Ubuntu 下同名文件替换后编译链接到旧内容的现象分析 - 实践

Ubuntu 下同名文件替换后编译链接到旧内容的现象分析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

Luogu P14007 「florr IO Round 1」查询游戏 题解 [ 蓝 ] [ 交互 ]

查询游戏 原题做法是显然的,子段绝对值最大值可以转化为求出前缀和序列的最大值、最小值,然后两者作差即可。查询操作可以转化为询问前缀和序列中两个元素比大小。因为查询数 \(2n\),所以各扫一遍用擂台法求最大、最…

RK3588和FPGA桥片之间IO电平信号概率性不能通信原因 - 实践

RK3588和FPGA桥片之间IO电平信号概率性不能通信原因 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

稀缺计算资源如何塑造机器学习优化专家

本文讲述了机器学习专家如何在有限计算资源条件下发展优化技能,重点介绍了特征选择技术在高维空间中的应用,以及如何将这些技术应用于保护电商平台安全的实际场景中。稀缺计算资源如何塑造卡洛斯韦尔塔斯的职业生涯 …

医院建设网站意义电子商务网站首页设计

Project下要创建四个文件夹: bin(输出目录\工作目录) 、include(头文件目录) 、lib(动态库目录) 、src(源码目录) 一、主项目模块配置: 1.配置属性——>常规——>输出目录加入(..\..\bin\) 2.配置属性——>调试——>工作目录加入($(OutDir)) 备注&am…

优雅的合并GIT分支

优雅的合并GIT分支 目标 将dev​分支合并到main分支,并且不产生“合并提交”。具体操作确保本地 main 分支是最新的: bash git checkout main git pull origin main # 获取远程最新的main分支代码切换到 dev​ 分支…

实用指南:豆瓣图书评论数据分析与可视化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

cpa广告联盟网站建设高端网站开发平台

文章目录 标准化与池化1. 标准化/归一化1.1 归一化归一化的作用 1.2 标准化批标准化方法 Batch Normailzation标准化方法的对比自动学习标准化方法 2. 池化2.1 池化的作用2.2 常见的池化方法2.3 池化方法的差异2.4 池化的必要性 标准化与池化 1. 标准化/归一化 1.1 归一化 归…

网站开发的核心技术上海装修公司招聘施工队长

概述 jQuery 是继 prototype 之后又一个优秀的 Javascript 框架。其宗旨是—写更少的代码,做更多的事情。它是轻量级的 js 库(压缩后只有21k) ,这是其它的 js 库所不及的,它兼容 CSS3,还兼容各种浏览器(IE 6.0, FF 1.5, Safari 2.…

网站怎么做电脑系统下载wordpress文章表情插件

每个进程都有三个标准文件描述符:stdin(标准输入)、stdout(标准输出)和stderr(标准错误)。默认情况下,stderr会输出到终端。使用2>可以将stderr重定向到其他地方,比如…

广州市番禺区官网seo站群干什么的

题目 题目链接 分析 这道题目一定要多读几遍,才能理解。 大意就是你有钱budget 和 库存stock的金属零件,让你从一堆机器里面选择一种机器可以合成最多金属的数量是多少,这些机器合成金属需要的零件数目是不一样的,composition…

网站手机客户端在线制作北京知名网站

本文节介绍 PP-TSM 模型如何转化为 ONNX 模型,并基于 ONNX 引擎预测。 1:环境准备 安装 Paddle2ONNX python -m pip install paddle2onnx 安装 ONNXRuntime # 建议安装 1.9.0 版本,可根据环境更换版本号 python -m pip install onnxrunti…

完整教程:Excel to JSON 插件 2.4.0 版本更新

完整教程:Excel to JSON 插件 2.4.0 版本更新pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &q…