灬Sunnnnn
承接各种定制开发,Qt、音视频、流媒体、客户端、服务端,需要的私聊。
展开
-
libVLC 专栏介绍
本专栏主要界面libVLC的使用,详细介绍了相关用法,使用Qt作为显示界面,不仅可以了解Qt的使用,QSS的美化,更能够熟悉libVLC核心接口的使用,最后打造一款属于自己的精美播放器。对音视频方面感兴趣的同学,Qt界面想提升的同学,每一节都有单独的源码供查看。原创 2024-04-24 20:07:24 · 359 阅读 · 0 评论 -
VLC和libVLC简介
libVLC是VLC的一部分,是一个库,它允许开发者将VLC的媒体播放功能集成到他们自己的应用程序中,libvlc提供了丰富的API,使得开发者可以在自己的软件中轻松地实现媒体播放、流媒体处理和其他多媒体相关的功能。:VLC提供丰富的播放控制功能,包括播放、暂停、停止、快进、快退、跳转等,还可以调整播放速度、音量和视频效果。:libvlc提供了丰富的播放控制API,包括播放、暂停、停止、快进、快退、跳转等,以及音量和视频效果的调整。:VLC是开源软件,遵循GPL协议,用户可以自由地使用、修改和分发。原创 2024-04-24 18:03:26 · 466 阅读 · 0 评论 -
libVLC windows开发环境搭建
LibVLC是一个强大的开源库,它构成了VLC媒体播放器的核心部分。LibVLC提供了一系列的功能接口,使得VLC能够处理流媒体的接入、音频和视频输出、插件管理以及线程系统等核心任务。跨平台性:VLC作为一个跨平台的多媒体播放器,可以运行在多种操作系统和计算机体系结构上。协议支持:LibVLC不仅支持播放本地视频文件,还支持播放基于各种流媒体协议(如RTMP、RTSP)的视频。API一致性。原创 2024-03-19 19:29:09 · 1866 阅读 · 0 评论 -
libVLC 制作一款精美的播放器
本文将简单介绍使用libVLC制作一款精美的播放器。开发环境:Visual Studio + Qt插件。Qt版本:Qt5.9。libVLC版本:3.0.20。以下是运行界面效果图:截取其中几张。右键菜单,功能还是比较齐全。原创 2024-04-24 19:43:18 · 244 阅读 · 0 评论 -
libVLC Ubuntu编译详解
有时候,windows上开发不满足项目需求,需要移植到linux上,不得不自行编译libvlc,编译libvlc相对而言稍微麻烦一点。我使用的操作系统:Ubuntu20.04查看系统命令lsb_release -alibvlc版本: 3.0.18。原创 2024-04-15 21:39:46 · 911 阅读 · 0 评论 -
libVLC 视频界面分割
如果还是不懂的话,我讲解一下原理,其实就是在上面叠加透明窗口界面,在叠加的窗口上面调用。主界面重写绘图和窗体移动事件:我们需要在主窗体移动的时候,叠加窗体跟随着主窗体移动。其实视频界面分割很简单,看过叠加窗口的这篇文章,不难理解,如何分割。还是像之前的文章一样,先创建一个叠加界面,设置窗体无边框和透明。先看看分割后的界面吧,根据分割的数量,来分割视频画面。paintEvent绘制线条,很简单吧。界面源码如下,ui上面没有任何控件。原创 2024-04-11 22:53:09 · 639 阅读 · 0 评论 -
libVLC 视频窗口上叠加透明窗口
很多时候,我们需要在界面上画一些三角形、文字等之类的东西,我们之需要重写paintEvent方法,比如像这样。这里我叠加了一个Widget在上面,widget上放了两个控件,一个label和一个comboBox。重写绘图和窗体移动事件:我们需要在主窗体移动的时候,叠加窗体跟随着主窗体移动。但是现在我们需要在播放视频的界面上绘制窗体,像下面这样。首先我们需要定义一个叠加窗体类TopWidget,这个类很简单,设置了窗体无边框和透明。以下就是重写的代码。原创 2024-04-11 22:12:17 · 1050 阅读 · 0 评论 -
libVLC 添加字幕文件
在观看视频文件的时候,偶尔会遇到有的视频文件缺少音频、有的没有字幕的问题,libVLC提供了很好的接口来帮我们添加字幕文件。使用libvlc_video_set_subtitle_file来加载字幕文件。运行结果: 可以看见字幕文件已经被加载上。根据自己已有的电影去下载相应的字幕文件。2.创建一个媒体播放器,加载媒体文件。1.初始化 VLC 实例。4.选择字幕文件加载。原创 2024-04-11 21:14:22 · 500 阅读 · 0 评论 -
VLC-Qt实现简单的视频播放器
要使用VLC-Qt,可以下载并编译它,或者使用官网上预编译的版本。VLC-Qt的使用相对简单,可以通过查看示例来学习如何使用。例如,可以下载示例代码,然后修改相关设置以适应自己的安装路径,从而实现播放本地视频或RTSP流等功能。VLC-Qt是一个结合了Qt应用程序和libVLC的免费开源库。由于集成了整个libVLC,VLC-Qt具备了libVLC的所有特性,修改 simple-player.pro中vlc-qt相关库内容,主要为最后两行。主要修改最后两行,以下是修改后的路径,按自己存放路径来。原创 2024-04-10 17:02:16 · 815 阅读 · 0 评论 -
libVLC 提取视频帧使用QGraphicsView渲染
4.创建QGraphicsScene场景对象,并设置矩形区域,QGraphicsView设置场景对象,然后在场景中添加一个。后面又讲解了使用OpenGL渲染每一帧视频数据,使用 OpenGL去绘制,利用 GPU 减轻 CPU 计算负荷。在前面章节中,我们讲解了如何使用QWidget渲染每一帧视频数据,这种方法对 CPU 负荷较高。5.提取视频帧数据,创建QImage对象,传入给ShowGraphicsItem显示。本章节介绍另一种方法来渲染视频,使用QGraphicsView来渲染。原创 2024-04-09 19:56:09 · 1071 阅读 · 0 评论 -
libVLC 提取视频帧使用OpenGL渲染
由于我们不停的生成的是QImage对象,因此对 CPU 负荷较高。其实在绘制这块我们可以使用 OpenGL去绘制,利用 GPU 减轻 CPU 计算负荷,本节讲解使用OpenGL来绘制每一帧视频数据。opengl完全没有基础的同学,请先学习以下的几篇文章,我们只需要了解2D图像如何渲染就行。以下是封装好的WOpenGLWidget类,使用提升的方式,提升为以下这个类就行了。在上一节中,我们讲解了如何使用QWidget渲染每一帧视频数据。4.提取视频帧数据,回调给OpenGL显示。ui界面如下图所示。原创 2024-04-08 20:05:46 · 983 阅读 · 0 评论 -
libVLC 提取视频帧使用QWidget渲染
如果应用程序需要在视频渲染前对视频帧进行一些处理,那么可以在libvlc_video_lock_cb中进行这些处理,并将处理后的帧数据地址赋值给 *planes。这里介绍libvlc_video_set_callbacks的lock和unlock两个回调。在前面的文章中,我们使用libvlc_media_player_set_hwnd设置了视频的显示的窗口。以下是libvlc_video_unlock_cb声明。以下是libvlc_video_lock_cb声明。4.提取视频帧数据,创建QImage对象。原创 2024-04-08 19:03:26 · 1010 阅读 · 0 评论 -
libVLC 提取视频帧
但如果你想要在自己的应用程序中处理视频帧(例如进行视频编辑、分析或其他自定义渲染),可以使用 libvlc_video_set_callbacks 来指定自定义的回调函数。如果应用程序需要在视频渲染前对视频帧进行一些处理,那么可以在libvlc_video_lock_cb中进行这些处理,并将处理后的帧数据地址赋值给 *planes。在前面的文章中,我们使用libvlc_media_player_set_hwnd设置了视频的显示的窗口。以下是libvlc_video_lock_cb声明。原创 2024-04-08 18:18:15 · 1543 阅读 · 0 评论 -
libVLC 音频立体声模式切换
在libVLC中,可以使用libvlc_audio_set_channel函数来设置音频的立体声模式。这个函数允许选择不同的音频通道,例如立体声、左声道、右声道、环绕声等。首先设置libvlc忽略鼠标事件libvlc_video_set_mouse_input(vlc_mediaPlayer, 0);返回值是一个整数,如果设置成功则返回 0,如果设置失败则返回一个负数。以下是VLC播放器中使用的视频裁剪,我们仿照这个做一个界面。设置鼠标右键弹出菜单:重写鼠标点击事件,弹出菜单。原创 2024-04-07 20:29:11 · 829 阅读 · 0 评论 -
libVLC 音频输出设备切换
在实际应用中,需要先使用 libvlc_audio_output_list_get获取音频输出模块,然后针对每个模块使用 libvlc_audio_output_device_list_get获取其下的设备列表,以便于用户选择和配置。libvlc_audio_output_list_get和libvlc_audio_output_device_list_get是libVLC 库中用于处理音频输出的两个函数。libvlc_audio_output_list_get用于获取音频输出模块的列表。原创 2024-04-07 19:30:38 · 1113 阅读 · 0 评论 -
libVLC 动态视频壁纸
在 Windows 上,你可能需要使用 Windows API 来设置壁纸,而在 Linux 上,你可能需要使用某种桌面环境特有的方法。在 macOS 上,这一功能可能受到限制。以下是一个简单的示例,说明了如何在 Windows 上使用 C++ 和 libVLC 库来实现这一功能。Progman 是一个系统进程,它是桌面管理器的名称。回调函数的原型如下:回调函数应该返回 TRUE 以继续枚举,或者返回 FALSE 以停止枚举。SHELLDLL_DefView 是桌面窗口视图的类名。原创 2024-03-27 21:24:00 · 974 阅读 · 0 评论 -
libVLC 视频抓图
libVLC 中通过libvlc_video_take_snapshot核心接口来截图。以下是VLC播放器中使用的截图界面,我们仿照这个做一个界面。首先,你需要初始化 libVLC 实例和媒体播放器对象。1. 初始化 libVLC 和媒体播放器。菜单添加action,并响应槽函数。生成目录下snap.png。原创 2024-03-27 19:58:00 · 1012 阅读 · 0 评论 -
libVLC 设置滤镜
锐化滤镜可以增强图像的细节,而模糊滤镜可以减少图像的细节,使图像看起来更平滑。:这些滤镜可以改变图像的亮度、对比度、饱和度、色调等颜色属性。:这些滤镜可以突出图像中的边缘,常用于图像分析和特征提取。:扭曲滤镜可以改变图像的形状,例如鱼眼效果、波纹效果等。:这些滤镜用于减少或消除图像中的噪点,提高图像质量。:这些滤镜可以改变图像中的颜色分布,常用于创意效果。打开文件,看了一下滤镜相关的参数,有很多类型的滤镜。:这些工具可以改变图像的尺寸或裁剪掉图像的一部分。:这些滤镜用于创建平滑的图像或视频过渡效果。原创 2024-03-26 21:37:39 · 1122 阅读 · 0 评论 -
libVLC 调节色温、色调、亮度、对比度、饱和度、高光
就是增加图片各种颜色的纯度。比如蓝色,增加纯度就是在蓝色上加蓝色,降低纯度就是加入蓝色的对比色,让它变灰色或者黑色。:描述的是像素数值与像素实际亮度之间的关系,没有伽玛,数字摄像机捕捉的颜色和人眼看到的大相径庭。:增加就是给图片所有色彩加白色,减少加黑色。:增加就是让白的更白,黑的更黑;减少就是白的不那么白,黑的不那么黑。首先我们查看VLC播放器中视频可以调节的效果如下图所示。,QSlider只能设置整型,出来的效果不好。然后链接槽函数,滑块改变值的时候,设置图像。首先我们在使用的时候需要先开启可调节。原创 2024-03-25 21:28:35 · 599 阅读 · 0 评论 -
libVLC 视频缩放
libvlc是一个常用的开源多媒体框架,它可以用来播放和处理各种类型的音频和视频文件。如果想要缩放视频,可以通过libvlc提供的API来实现。首先设置libvlc忽略鼠标事件libvlc_video_set_mouse_input(vlc_mediaPlayer, 0);以下是VLC播放器中使用的视频缩放,我们仿照这个做一个界面。设置鼠标右键弹出菜单:重写鼠标点击事件,弹出菜单。以下是做出来的效果图。原创 2024-03-25 20:41:41 · 603 阅读 · 0 评论 -
libVLC 捕获鼠标、键盘事件
在实现播放器的时候,我们需要捕获键盘、鼠标事件进行视频快进、快退,或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下,在使用libVLC库的时候,我们无法捕获这些事件,因为我们将Qt的视频窗口传递给了libVLC。首先打开文件的时候禁用鼠标、键盘事件,并且设置视频窗口为Qt的Widget控件,libvlc_media_player_set_hwnd。但是libVLC提供了两个接口,使得忽略了对鼠标键盘事件的处理,让事件返回到原始Qt的widget上。好了,知道了如何操作了之后,下面开始实现代码。原创 2024-03-25 20:09:37 · 821 阅读 · 0 评论 -
libVLC 视频裁剪
使用 libVLC 进行视频裁剪并不是直接支持的功能,因为 libVLC 主要是一个媒体播放库。然而,你可以通过调整播放窗口的大小和设置视频输出的区域来实现一种“视觉上的裁剪”。这个函数允许你指定一个裁剪区域,格式为 “NxN”(例如,“16:9”、“4:3” 等)或者像素值(例如 “640x480”)。如果你的目标是在播放时只显示视频的一部分,你可以通过设置视频输出的裁剪区域来实现。以下是VLC播放器中使用的视频裁剪,我们仿照这个宽高比例做一个界面。设置鼠标右键弹出菜单:重写鼠标点击事件,弹出菜单。原创 2024-03-25 19:29:50 · 567 阅读 · 0 评论 -
libVLC 设置视频宽高比
传统影视的宽高比是 4:3,宽屏幕电影的宽高比是 1.85:1,高清晰度电视是 16:9,全景式格式电影是 2.35:1。投影屏幕尺寸一般都按照对角线的大小来定义的。使用libvlc_video_set_aspect_ratio设置视频宽高比。以下是VLC播放器中使用的宽高比,我们仿照这个宽高比例做一个界面。宽高比是指视频图像的宽度和高度之间的比率。设置鼠标右键弹出菜单:重写鼠标点击事件。原创 2024-03-21 21:18:27 · 1075 阅读 · 0 评论 -
libVLC 轨道信息
是一个流行的开源多媒体播放器框架,它提供了丰富的 API 用于开发视频播放相关的应用程序。获取轨道信息,是指获取当前媒体文件的音频、视频或字幕等轨道信息。媒体轨道信息结构存放在libvlc_media_track_t结构体中,如下所示。常见的视频文件一般都有音频和视频、特殊的会带有字幕文件。联合体:分别存放音频、视频、字幕数据。音频数据如下:通道数量、采样率。视频数据:存放宽、高等一些数据。原创 2024-03-21 20:25:43 · 479 阅读 · 0 评论 -
libVLC 添加图片和文本水印
使用libvlc_video_set_marquee_int和libvlc_video_set_marquee_string设置以上枚举类型。使用libvlc_video_set_logo_int和libvlc_video_set_logo_string设置上面的枚举。以下是libvlc_video_marquee_option_t类型。以下是libvlc_video_logo_option_t 枚举类型。以下是位置相关的枚举libvlc_position_t。添加图片:使用Logo相关的接口。原创 2024-03-21 19:55:15 · 628 阅读 · 0 评论 -
libVLC 元数据
创建媒体播放器:libvlc_media_player_new_from_media。媒体元数据(Metadata):包括媒体文件的基本信息,如标题、艺术家、专辑等。在libVLC中媒体的元数据类型由libvlc_meta_t表示。获取各种元数据:libvlc_media_get_meta接口。创建并初始化一个libvlc实例:libvlc_new。创建媒体:libvlc_media_new_path。解析:libvlc_media_parse。原创 2024-03-21 19:04:07 · 258 阅读 · 0 评论 -
libVLC 播放控制
libVLC 是 VLC 媒体播放器的开源库版本,允许在他们的应用程序中嵌入视频和音频播放功能。ui界面如下图所示:播放、暂停、停止、打开文件、控制播放速率、播放声音等。响应事件回调:显示播放进度,更新进度条。原创 2024-03-19 21:39:55 · 499 阅读 · 0 评论 -
libVLC 事件机制
libVLC是一个开源的多媒体框架,它提供了丰富的功能,其中包括一个灵活且强大的事件机制。在libVLC中,事件机制主要用于通知应用程序有关播放、媒体状态更改或其他重要事件的信息。libVLC的事件模型基于订阅-发布模式,主要包含以下关键组件:事件类型(libvlc_event_type_t):定义了一系列预定义的事件,如媒体打开、播放、暂停、停止、结束等。原创 2024-03-19 19:54:47 · 547 阅读 · 0 评论