c 语言调用 libvlc.dll 全屏播放视频

  • Post author:
  • Post category:其他


/*

不需要引用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;

}



版权声明:本文为wangiyeng原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。