首页 > 其他分享 >Qt+VLC简单的使用显示视频Demo

Qt+VLC简单的使用显示视频Demo

时间:2022-10-31 21:07:16浏览次数:70  
标签:LIBVLC Qt Demo VLC libvlc player API media void


先看看效果:

Qt+VLC简单的使用显示视频Demo_vlc

 

vlc播放视频,要比QMediaPlayer实用的多,并且同时运行20个视频时不会出现卡顿。

 

这个Demo功能实现非常简单,简单的说一下vlc流程:

1、创建并初始化一个libvlc实例
LIBVLC_API libvlc_instance_t * libvlc_new( int argc , const char *const *argv );
 

2、根据给定的媒体对象创建一个播放器对象
LIBVLC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *p_md );
 

3、解析媒体实例
LIBVLC_API void libvlc_media_parse( libvlc_media_t *p_md );
 

4、根据事件解析器分析媒体各种事件及处理

//从发送事件的媒体播放器对象那里获取一个事件管理器
① LIBVLC_API libvlc_event_manager_t * libvlc_media_player_event_manager ( libvlc_media_player_t *p_mi );
//事件通知注册器
② LIBVLC_API int libvlc_event_attach( libvlc_event_manager_t *p_event_manager, libvlc_event_type_t i_event_type, libvlc_callback_t f_callback, void *user_data );

5、设置给予媒体播放器媒体输出的win32/win64窗口句柄
LIBVLC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable );
(注:用Qt的话,比如用QLabel,要用它的winID,并且强转成(void *)类型)
 

6、获取媒体的状态
LIBVLC_API libvlc_state_t libvlc_media_get_state(libvlc_media_t *p_md );
 

7、开始播放
LIBVLC_API int libvlc_media_player_play ( libvlc_media_player_t *p_mi );
 

8、检测媒体是否正在播放(注:这里的返回值可以强转成bool类型方便一点)
LIBVLC_API int libvlc_media_player_is_playing ( libvlc_media_player_t *p_mi );
 

9、正在播放的媒体暂停(暂停再点击播放可以继续)
LIBVLC_API void libvlc_media_player_set_pause ( libvlc_media_player_t *mp,  int do_pause );
 

10、正在播放的媒体停止(停止再点击播放则重头播放)
LIBVLC_API void libvlc_media_player_stop ( libvlc_media_player_t *p_mi );
 

11、释放所有vlc对象(注:在释放libvlc_media_player_t之前,记得先将视频停止,避免的不必要麻烦)
LIBVLC_API void libvlc_media_player_release( libvlc_media_player_t *p_mi );//释放libvlc_media_player_t
LIBVLC_API void libvlc_media_release( libvlc_media_t *p_md );//释放libvlc_media_t。
LIBVLC_API void libvlc_release( libvlc_instance_t *p_instance );//释放libvlc_instance_t。



源码已经上传到Github:​​https://github.com/ShaShiDiZhuanLan/Demo_VLC_Qt​

标签:LIBVLC,Qt,Demo,VLC,libvlc,player,API,media,void
From: https://blog.51cto.com/u_15854865/5811248

相关文章

  • Qt检测U盘插入拔出Demo
    要做这个,要先知道Qt的QAbstractNativeEventFilter类,虚函数nativeEventFilter。这个类的主要作用是捕获全局windows消息。先看一下效果:基本注意以下两点:1、新建的类要继承QAb......
  • 控制台效果Demo
    先看下效果:效果是这样的,主要是运用的定时器让文字逐步显现出来。......
  • QSystemTrayIcon增加系统托盘图标Demo
    先看一下效果:代码如下#ifndefMAINWINDOW_H#defineMAINWINDOW_H#include<QMainWindow>#include<QMenu>#include<QSystemTrayIcon>#include<QCloseEvent>namespaceUi{......
  • Qt5.6作浏览器Demo可查看地图
    这里用到了ui提升部件的小方法,记得设置控件为Microsoft webbrowser,先看看效果:用到ui里面的QAxWidget控件,用以下这个类来提升这个控件。#include<ActiveQt/QAxWidget>#inc......
  • Qt用Poppler库解析PDF成图片的简单示例
    解析PDF这里用的是Poppler库,与之相关的库还有MuPDF库,参考了这个链接:​​https://people.freedesktop.org/~aacid/docs/qt5/​​相关链接:​​qt显示pdf——poppler-qt问题​......
  • Qt对Json的生成与解析Demo
    QJsonObject类用于封装JSON对象。JSON对象是键值对,其中键是唯一的字符串,其值由QJsonValue代表。一个QJsonObject可以从QVariantMap转换/被转换。QJsonArray类用于封装JSON数......
  • Qt创建和删除文件小Demo(顺便讲了补全功能)
    背景:笔者需要创建和删除多个pdd和多个pff文件(这些是自己创建的类型),一个个手动创建和删除很麻烦,就做了一款小软件解决此问题。先看一下效果:代码如下:①、头文件:#ifndefMAINWI......
  • QCombobox应用QStyledItemDelegate小Demo
    效果是这样的:QComboBox是个很基础的控件,也是继承自QWidget。①我们先建立代理类,继承自QStyledItemDelegate:1、头文件:#ifndefITEMDELEGATE_H#defineITEMDELEGATE_H#inclu......
  • Qt的正则表达式
     如果使用的是QtQuick的正则表达式,请读我以前的博客首先明白什么是正则表达式:正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,......
  • Qt下常用的数值计算(绝对值qAbs,最大qMax,最小qMin,开根号Sqrt,N次方是pow,断言宏Q_ASSERT和
    TqAbs(constT&value)Comparesvaluetothe0oftypeTandreturnstheabsolutevalue.ThusifTisdouble,thenvalueiscomparedto(double)0.Example:intabsolu......