/*
不需要引用vlc.h,测试运行成功,可复制直接运行,注意修改媒体文件路径
方法:
先安装vlc 播放器
然后在播放器安装目录新建 vlc2.c 文件
因为需要libvlc.dll 、libvlccore.dll和plugins
把下面的内容复制进去编译,64位的用64位编译,32位用32位编译
编译加上参数 -Wl,–subsystem,windows
编译完的程序需要放在 vlc 的安装目录运行
*/
#pragma comment(linker, “/subsystem:\”windows\” /entry:\”mainCRTStartup\””)
//不显示运行命令行程序窗口,不起作用 用gcc 参数
//gcc -Wl,–subsystem,windows
#include <stdio.h>
#include <windows.h>
typedef int* (*Libvlc_new)(int,char*);
typedef char* (*Libvlc_get_version)();
typedef int* (*Libvlc_media_new_path)(int*,char*);
typedef int* (*Libvlc_media_player_new_from_media)(int*);
typedef int* (*Libvlc_media_player_release)(int*);
typedef int (*Libvlc_media_player_play)(int*);
typedef int (*Libvlc_video_get_width)(int*);
typedef int (*Libvlc_media_player_get_length)(int*);
typedef int (*Libvlc_set_fullscreen)(int*);
int main(){
HINSTANCE hinstance=LoadLibrary(“./libvlc.dll”);
if(NULL==hinstance){
printf(“load error”);
}
// puts(“load success”);
Libvlc_new libvlc_new=(Libvlc_new)GetProcAddress(hinstance,”libvlc_new”);
Libvlc_get_version libvlc_get_version=(Libvlc_get_version)GetProcAddress(hinstance,”libvlc_get_version”);
Libvlc_media_new_path libvlc_media_new_path=(Libvlc_media_new_path)GetProcAddress(hinstance,”libvlc_media_new_path”);
Libvlc_media_player_new_from_media libvlc_media_player_new_from_media=(Libvlc_media_player_new_from_media)GetProcAddress(hinstance,”libvlc_media_player_new_from_media”);
Libvlc_media_player_play libvlc_media_player_play=(Libvlc_media_player_play)GetProcAddress(hinstance,”libvlc_media_player_play”);
Libvlc_media_player_release libvlc_media_player_release=(Libvlc_media_player_release)GetProcAddress(hinstance,”libvlc_media_player_release”);
Libvlc_video_get_width libvlc_video_get_width=(Libvlc_video_get_width)GetProcAddress(hinstance,”libvlc_video_get_width”);
Libvlc_media_player_get_length libvlc_media_player_get_length=(Libvlc_media_player_get_length)GetProcAddress(hinstance,”libvlc_media_player_get_length”);
Libvlc_set_fullscreen libvlc_set_fullscreen=(Libvlc_set_fullscreen)GetProcAddress(hinstance,”libvlc_set_fullscreen”);
char* version=libvlc_get_version();
printf(“version is %s\n”,version);
// puts(version);
char *vlc_argv[100];
int vlc_argc = 0;
vlc_argv[vlc_argc++] = “–ignore-config”;
vlc_argv[vlc_argc++] = “-I”;
// vlc_argv[vlc_argc++] = “dummy”;
vlc_argv[vlc_argc++] = “–fullscreen”;
char *vlc_argv2= “–ignore-config –fullscreen”;
// vlc_argv[vlc_argc++] = “–plugin-path=H:\\Program Files\\VideoLAN\\VLC\\plugins”;
// int* instance =libvlc_new(vlc_argc,vlc_argv);
int* instance =libvlc_new(0,vlc_argv2);
printf(“\ninstance is %p”,instance);
if(instance==NULL){
return 0;
}
printf(“\n instance ok”);
int* m_vlcMedia = libvlc_media_new_path (instance, “C:\\logo.mp4”);//本地路径
int* m_vlcMplay = libvlc_media_player_new_from_media (m_vlcMedia);
// libvlc_media_player_release(m_vlcMedia);
printf(” m_vlcMedia %p\n”,m_vlcMedia);
printf(“m_vlcMplay %p\n”,m_vlcMplay);
libvlc_media_player_play(m_vlcMplay);
libvlc_set_fullscreen(m_vlcMplay);
Sleep(1000);
int length = libvlc_media_player_get_length(m_vlcMplay);
int width=libvlc_video_get_width(m_vlcMplay);
printf(“width is %d length is %d\n”,width,length);
printf(“\n playing “);
Sleep(length);
// system(“pause”);
return 0;
}