近期学着使用VLC,发现相关开发的教程很少,VLC官网的资料有点零散不太好入门,所以我写了这篇算是VLC的入门吧。
先来一段VLC的调用主逻辑:
libvlc_instance_t *vlcInstance;
libvlc_media_t *vlcMedia
libvlc_media_player_t *vlcPlayer
vlcInstance = libvlc_new(0,NULL);
vlcMedia = libvlc_media_new_path(vlcInstance, "e:\\media\\jiandie.mp4");
vlcPlayer = libvlc_media_player_new_from_media (vlcMedia);
libvlc_media_release(vlcMedia);
libvlc_media_player_set_hwnd(vlcPlayer, (void*)videoWidget->winId());
libvlc_media_player_play (vlcPlayer);
这个逻辑我是在windows上编译成功的,需要注意的一点是(void*)videoWidget->winId()指的是你用于显示的窗口ID。
说到这随便在往深处说说:
libvlc_new:主要是初始化系统的线程环境,初始化module链表 ,,,? ,,,
libvlc_media_new_path:
先调用make_URI凑个字符串(这里应该有专用名词解释的)如凑为:file:\\e:\media\jiandie.mp4;
input_item_New()
libvlc_media_new_from_input_item()
libvlc_media_player_new_from_media:
根据前一项创建并初始化media_player
libvlc_media_player_set_hwnd:顾名思义不做解释
libvlc_media_player_play:
其中创建线程,需要注意的是以下函数 input_Start() -> vlc_clone()其中创建线程,线程函数为oid *Run( void *obj );
这个线程函数其中Init( p_input ) )和 MainLoop( p_input, true );需特别注意