Qt+VLC简单的使用显示视频Demo
2017-05-24 10:52
816 查看
先看看效果:
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。
示例代码已经上传到csdn:
http://download.csdn.net/detail/u014597198/9850645
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。
示例代码已经上传到csdn:
http://download.csdn.net/detail/u014597198/9850645
相关文章推荐
- Qt开发:使用VLC播放视频,并且显示画面
- 使用VLC-Android写一个简单的电视直播demo
- qt 使用opengl显示yuv实时视频流
- 使用QT和Opencv获取文件夹中任意的视频文件并显示出来
- qt使用ffmpeg显示rtsp视频流
- 使用QT进行视频帧显示时如何防止闪烁现象出现呢?
- IE浏览器使用VLC实时显示视频(海康、大华)
- Vitamio组件视频在线播放器,使用简单Demo
- Qt+VLC播放多个视频的Demo
- 【转】Qt简单视频显示--
- jquery之超简单的div显示和隐藏特效demo
- vlc的应用之六:简单的视频点播系统(B/S)的实现
- jquery之超简单的div显示和隐藏特效demo
- [原创视频]PHP在netbeans中的简单使用
- jquery之超简单的div显示和隐藏特效demo
- 使用V4L进行简单视频捕捉的基本步骤
- C#简单实现渐显弹出消息在"右下角"显示(Demo)
- RDLC使用手册_RDLC简单Demo
- 如何使用Qt 4把ls命令的结果显示到GUI界面上去?-兼回答网友提问
- C#2005 一个简单的查询界面代码:DataGridView使用、图像显示、复合查询样例