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文檔鏈接
版本選擇

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 );

如何使用

libvlc文件
只需要包含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 <windows.h>
#define ssize_t SSIZE_T
#include <vlc/vlc.h>

代碼及運行效果

!運行效果圖

代碼鏈接

程序代碼

參考文獻

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章