Qt + libVlc

VideoLAN 简介

VideoLAN 是一个开发通过局域网(LAN)播放视频及其他媒体格式的软件的计划。最初开发了两个媒体流媒体程序 VideoLAN Client(VLC)及 VideoLAN Server(VLS),然而大部分的 VLS 功能都逐渐集成进 VLC,所以就将 VLC 改名为 VLC media player。


VideoLAN 计划

VideoLAN计划是一个开发多媒体播放程序的计划。原本针对流式影音有两个程序—VideoLAN Client (VLC) 及 VideoLAN Server (VLS)—然而大部分的VLS功能都集成进VLC,所以就将程序名称改为VLC多媒体播放器。
这个计划原本是巴黎中央理工学院学生的专题计划。在2001年2月1日以GPL发布后,计划成员横跨二十多个国家。
这个播放软件的三角锥图标是源自于交通三角锥。图标是2006年高分辨率的CGI页面Computer-generated imagery并不存在,英语维基百科对应页面为电脑成像。用以取代先前手绘的低分辨率图标。

VLC 下载地址

VLC下载地址

VLC文档链接
Qt + libVlc_第1张图片

VLC常用接口(具体说明可看头文件)

// 1、创建并初始化一个实例
LIBVLC_API libvlc_instance_t *
libvlc_new( int argc , const char *const *argv );
 
// 2、创建具有特定媒体资源位置的媒体,例如一个有效的URL
LIBVLC_API libvlc_media_t *libvlc_media_new_location(
                                   libvlc_instance_t *p_instance,
                                   const char * psz_mrl );
// 3、向媒体添加一个选项
LIBVLC_API void libvlc_media_add_option(
                                   libvlc_media_t *p_md,
                                   const char * psz_options );
// 4、根据给定的媒体对象创建一个播放器对象
LIBVLC_API libvlc_media_player_t * libvlc_media_player_new_from_media( libvlc_media_t *p_md );

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

// 6、根据时间解析器分析媒体各种事件及处理
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 );
 
// 7、设置媒体播放器输出的win窗口句柄
LIBVLC_API void libvlc_media_player_set_hwnd ( libvlc_media_player_t *p_mi, void *drawable );

// 8、获取视频每一帧
LIBVLC_API
void libvlc_video_set_callbacks( libvlc_media_player_t *mp,
                                 libvlc_video_lock_cb lock,
                                 libvlc_video_unlock_cb unlock,
                                 libvlc_video_display_cb display,
                                 void *opaque );
 LIBVLC_API
void libvlc_video_set_format( libvlc_media_player_t *mp, const char *chroma,
                              unsigned width, unsigned height,
                              unsigned pitch );
// 9、开始播放
LIBVLC_API int libvlc_media_player_play ( libvlc_media_player_t *p_mi );

// 10、停止
LIBVLC_API void libvlc_media_player_stop ( libvlc_media_player_t *p_mi );

// 11、释放资源
LIBVLC_API void libvlc_media_player_release( libvlc_media_player_t *p_mi );
LIBVLC_API void libvlc_media_release( libvlc_media_t *p_md );
LIBVLC_API void libvlc_release( libvlc_instance_t *p_instance );

如何使用

Qt + libVlc_第2张图片
只需要包含sdk/include 、链接sdk/lib、引用libvlc.dll和libvlccore.dll库即可
如:(VS只需在项目属性里面中附加包含目录、附加库目录、添加依赖项中添加即可)

VLCPATH = $$PWD/../vlc-3.0.2-win64/vlc-3.0.2

LIBS += -L$$VLCPATH/sdk/lib
LIBS += -L$$VLCPATH -llibvlc -llibvlccore
INCLUDEPATH += $$VLCPATH/sdk/include

构建错误解决方法

错误信息
在包含头文件之前,添加宏定义即可解决

#include 
#define ssize_t SSIZE_T
#include 

代码及运行效果

!Qt + libVlc_第3张图片

代码链接

程序代码

参考文献

大佬博客 https://blog.csdn.net/u011012932/column/info/24990

你可能感兴趣的:(Qt,VLC)