首页 > 其他分享 >libVLC 动态视频壁纸

libVLC 动态视频壁纸

时间:2024-03-27 21:33:34浏览次数:25  
标签:libvlc 窗口 视频 media libVLC player 壁纸 NULL

在 Windows 上,你可能需要使用 Windows API 来设置壁纸,而在 Linux 上,你可能需要使用某种桌面环境特有的方法。在 macOS 上,这一功能可能受到限制。

效果图如下所示:

以下是一个简单的示例,说明了如何在 Windows 上使用 C++ 和 libVLC 库来实现这一功能。请注意,这个示例可能需要根据你的具体需求和操作系统进行调整:

1.使用 FindWindow 函数来获取是否存在 Progman 窗口的句柄。

Progman 是一个系统进程,它是桌面管理器的名称。Progman 进程负责管理桌面窗口,Progman 窗口具有以下特点:

  • 它是系统启动时自动运行的。
  • 它是一个顶级窗口,没有父窗口。
  • 它的窗口类名为 “Progman”。
  • 它通常位于所有其他窗口的后面,因为它是一个底层窗口,用于显示桌面背景和图标。
	HWND progman = FindWindow(L"Progman", NULL);
	if (progman == NULL)
		return -1;

2.EnumWindows查找桌面窗口。

SHELLDLL_DefView 是桌面窗口视图的类名。

这个函数可以用来查找特定的窗口,或者执行对每个窗口的处理,函数原型如下:

BOOL EnumWindows(
    WNDENUMPROC lpEnumFunc,
    LPARAM      lParam
);

参数说明:

  • lpEnumFunc:指向应用程序定义的回调函数的指针,该函数接受每个窗口的句柄和应用程序定义的值。回调函数的返回值类型必须是 BOOL。
  • lParam:一个应用程序定义的值,将传递给回调函数。

回调函数的原型如下:回调函数应该返回 TRUE 以继续枚举,或者返回 FALSE 以停止枚举。

BOOL CALLBACK EnumWindowsProc(
    HWND hwnd,
    LPARAM lParam
);
  • hwnd:顶层窗口的句柄。
  • lParam:由 EnumWindows 函数传递的应用程序定义的值。

3.使用libVLC播放视频,并设置窗口句柄。

	// 初始化 VLC 实例
	libvlc_instance_t *vlcInstance = libvlc_new(0, NULL);

	// 加载媒体文件
	const char *mediaPath = "F:\\ds.mp4"; // 替换为你的视频文件路径
	libvlc_media_t *vlcMedia = libvlc_media_new_path(vlcInstance, mediaPath);

	// 创建一个 MediaPlayer 实例
	libvlc_media_player_t *vlcMediaPlayer = libvlc_media_player_new_from_media(vlcMedia);

	// 等待元数据加载完成
	libvlc_media_parse(vlcMedia);

	libvlc_media_player_set_hwnd(vlcMediaPlayer, (void *)workerw);

完整源码:

#include <windows.h>
#include <vlc/vlc.h>
#include <iostream>

HWND workerw;
BOOL CALLBACK DesktopWindow(HWND hwnd,LPARAM lparam)
{
	HWND p = FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL);
	if (p == NULL)
		return 1;
	workerw = FindWindowEx(NULL, hwnd, L"WorkerW", NULL);
}

int  main() 
{
	HWND progman = FindWindow(L"Progman", NULL);
	if (progman == NULL)
		return -1;

	DWORD_PTR result = 0;
	SendMessageTimeout(progman, 0x052c, NULL, NULL, SMTO_NORMAL, 1000, &result);
	EnumWindows(DesktopWindow, NULL);

	// 初始化 VLC 实例
	libvlc_instance_t *vlcInstance = libvlc_new(0, NULL);

	// 加载媒体文件
	const char *mediaPath = "F:\\ds.mp4"; // 替换为你的视频文件路径
	libvlc_media_t *vlcMedia = libvlc_media_new_path(vlcInstance, mediaPath);

	// 创建一个 MediaPlayer 实例
	libvlc_media_player_t *vlcMediaPlayer = libvlc_media_player_new_from_media(vlcMedia);

	// 等待元数据加载完成
	libvlc_media_parse(vlcMedia);

	libvlc_media_player_set_hwnd(vlcMediaPlayer, (void *)workerw);

	Sleep(1000);

	// 播放视频
	libvlc_media_player_play(vlcMediaPlayer);

	std::cin.get();

	// 清理资源
	libvlc_media_player_stop(vlcMediaPlayer);
	libvlc_media_player_release(vlcMediaPlayer);
	libvlc_release(vlcInstance);

	return 0;
}

更多参考:

libVLC 事件机制-CSDN博客

libVLC windows开发环境搭建-CSDN博客

libVLC 视频裁剪

libVLC 视频抓图

libVLC 调节色温、色调、亮度、对比度、饱和度、高光

标签:libvlc,窗口,视频,media,libVLC,player,壁纸,NULL
From: https://blog.csdn.net/wzz953200463/article/details/137088889

相关文章

  • libVLC 视频抓图
    Windows操作系统提供了多种便捷的截图方式,常见的有以下几种:全屏截图:通过按下PrtSc键(PrintScreen),可以截取整个屏幕的内容。截取的图像会保存在剪贴板中,可以通过Ctrl+V粘贴到图片编辑工具或其他软件的输入框中。当前窗口截图:同时按下Alt + PrtSc键,可以截取当前活动的窗口。同......
  • 基于JAVA SSM 弹幕视频网站项目 (内附计算机毕业设计LW + PPT+ 源码)
    弹幕视频网站项目技术栈该项目采用了以下核心技术栈:后端框架/库:ssm数据库:MySQL5.7前端技术:JSP,JavaScript,HTML5,CSS3服务器:Tomcat7开发工具:Eclipse/MyEclipse/IDEA,Navicat11JDK版本:JDK1.8Maven包:Maven3.3.9核心功能描述前台功能模块:包括视频信息展示、商......
  • AI视频换脸技术:探索与隐患
    在当今数字时代,人工智能(AI)技术的发展日新月异,为我们的生活带来了诸多便利和创新。其中,AI视频换脸技术作为人工智能应用的一个分支,在近年来备受关注。这项技术不仅让我们惊叹于其神奇的效果,同时也引发了人们对于隐私安全、伦理道德等方面的担忧。本文将深入探讨AI视频换脸技......
  • 901-深入浅出Python量化交易实战的配套视频和代码(段小手)中文PDF+源代码(源文件)
    小瓦的故事——从零开始本书源于一个真实的故事,故事的主角是一位名叫小瓦的姑娘。小瓦出生在一个普通的家庭,父母都是老实淳朴的普通人,靠着并不丰厚的收入把小瓦养育成人。18岁那年,小瓦考上了一所不好不坏的大学,所学专业是一个就业前景算不上理想的专业。再加上她本身也谈不......
  • 借助剪映软件生成原创视频(真人人声,免VIP)
    civilpy:借助各大模型的优点生成原创视频(真人人声)Plus0赞同·0评论文章​编辑是的,剪映也出了声音克隆了,只需要十几秒的录音就可以克隆自己的声音,虽然微瑕,但是对于不习惯机器音的很多创作来说,也算是福音,但是,如上下图示,用是可以用,但是你要升级VIP才能导出视频。那么,在没......
  • 【漏洞复现】通天星CMSV6车载视频监控平台 druid存在默认口令漏洞
    免责声明:文章来源互联网收集整理,文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者......
  • 【SPIE 出版|EI, Scopus Index】第六届图像、视频处理和人工智能国际会议(IVPAI 2024)
    第六届图像、视频处理和人工智能国际会议(IVPAI2024)日期:2024年7月21-23日地点:马来西亚,吉隆坡官网:www.ivpai.org会议背景:IVPAI在过去的五年(2018-2021&2023)里取得了巨大的成功。累计吸引了超过7000份申请和2000名与会者,展现了其在全球范围内的广泛影响力和学术价值。......
  • Qt - 音视频播放2
    解码器下载链接:LAVfilters 音视频播放播放内存中的音乐QFileread("./music/Nevada.mp3");  if(!read.open(QIODevice::ReadOnly)) {    qDebug()<<"文件打开失败,请重试~"; }  //下面用的对象,必须动态申请,不然构造函数执行完毕,局部变量内存......
  • 一个可一键生成短视频的AI大模型,亲测可用
    大家好,我是Java陈序员。自从OpenAI发布Sora文本生成视频模型后,文本生成视频的AI技术引起了无数圈内圈外人士的关注和实验。今天,给大家介绍一个大模型,可一键生成短视频。关注微信公众号:【Java陈序员】,获取开源项目分享、AI副业分享、超200本经典计算机电子书籍等。项......
  • 使用ffmpeg命令把单张或多张图片生成固定时长的视频
    1,官网下载FFmpeg.exe      参见:https://blog.csdn.net/m0_46278037/article/details/1137905402,FFmpegHelper代码如下1publicclassFFmpegHelper2{3publicvoidConvertVideo()4{56stringinputDi......