本文记录使用libVLC的开发的最简单的视频播放器示例。VLC Media Player是一款优秀的播放器,但是由于它的源代码编译的难度比较大,一直没有深入研究过它的开发方面的技术。此前触到了一些VLC开发方面的东西,因此总结了一下libVLC的开发示例程序。
1. 自行编译
2. 直接从安装目录里面拷贝出来
1. 动态链接库*.dll:安装目录下的libvlc.dll,libvlccore.dll以及plugins目录下的所有文件。
PS:VLC支持非常多的plugin。因此plugins目录的体积确实是非常大的。
2. 静态链接库*.lib:安装目录/sdk/lib
3. 头文件*.h:安装目录/sdk/include
使用libVLC开发一个播放器十分的容易。最简单的基于libVLC的视频播放器的流程图如下图所示。
libvlc_instance_t:代表一个libVLC的实例。创建或者以上3个结构体通过以下6个函数:
libvlc_media_t:代表一个可以播放的媒体。
libvlc_media_player_t:代表一个VLC媒体播放器(一个视频播放器播放一个视频)。注意VLC并不仅仅用于媒体播放。
libvlc_new():创建libvlc_instance_t。可以已通过下面的函数控制媒体的播放或者暂停,这些函数都需要使用libvlc_media_player_t作为参数。这里处于简化的目的,只使用了播放和停止函数:
libvlc_media_new_path():创建libvlc_media_t。
libvlc_media_player_new_from_media():创建libvlc_media_player_t。
libvlc_media_player_release():释放libvlc_media_player_t
libvlc_media_release():释放libvlc_media_t。
libvlc_release():释放libvlc_instance_t。
libvlc_media_player_play():播放。除了上述3个函数之外,还包括libvlc_media_player_set_position()等函数,这里不再一一记录。
libvlc_media_player_pause():暂停。
libvlc_media_player_stop():停止。
libvlc_media_new_location (inst, "file:///F:\\movie\\cuc_ieschool.flv");此外,VLC还支持很多“神奇”的协议,比如输入“screen://”协议就可以进行屏幕录制,代码如下。
libvlc_media_new_location (inst, "screen://");
/** * 最简单的基于libVLC的播放器 * Simplest libVLC Player * * 雷霄骅 Lei Xiaohua * leixiaohua1020@126.com * 中国传媒大学/数字电视技术 * Communication University of China / Digital TV Technology * http://blog.csdn.net/leixiaohua1020 * * 本程序是一个最简单的基于libVLC的视频播放器。 * 适合初学者学习libVLC。 * * This example is the simplest Video Player based on libVLC. * Suitable for the beginner of libVLC. */ #include <Windows.h> #include "vlc/vlc.h" int main(int argc, char* argv[]) { libvlc_instance_t * inst; libvlc_media_player_t *mp; libvlc_media_t *m; libvlc_time_t length; int width; int height; int wait_time=5000; //libvlc_time_t length; /* Load the VLC engine */ inst = libvlc_new (0, NULL); //Create a new item //Method 1: //m = libvlc_media_new_location (inst, "file:///F:\\movie\\cuc_ieschool.flv"); //Screen Capture //m = libvlc_media_new_location (inst, "screen://"); //Method 2: m = libvlc_media_new_path (inst, "cuc_ieschool.flv"); /* Create a media player playing environement */ mp = libvlc_media_player_new_from_media (m); /* No need to keep the media now */ libvlc_media_release (m); // play the media_player libvlc_media_player_play (mp); //wait until the tracks are created _sleep (wait_time); length = libvlc_media_player_get_length(mp); width = libvlc_video_get_width(mp); height = libvlc_video_get_height(mp); printf("Stream Duration: %ds\n",length/1000); printf("Resolution: %d x %d\n",width,height); //Let it play _sleep (length-wait_time); // Stop playing libvlc_media_player_stop (mp); // Free the media_player libvlc_media_player_release (mp); libvlc_release (inst); return 0; }
程序运行后,会弹出一个窗口播放“cuc_ieschool.flv”文件。
Simplest libVLC Example
最简单的基于libVLC的例子:最简单的基于libVLC的视频播放器
原文地址:http://blog.csdn.net/leixiaohua1020/article/details/42363079