windows下 vlc入坑指引
引用博文 https://blog.csdn.net/leixiaohua1020/article/details/42363079?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161581301116780261968089%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=161581301116780261968089&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v1~rank_blog_v1-1-42363079.pc_v1_rank_blog_v1&utm_term=vlc
1.下载vlc配置文件,文件后缀名为win32.7z。
下载地址:http://download.videolan.org/pub/videolan/vlc/last/win32/http://download.videolan.org/pub/videolan/vlc/last/win32/
2.拷贝到相应文件到项目中,其中sdk目录中包含头文件、vlc插件和lib库。
3.在vs中配置头文件和库目录,其中的lib文件只需要添libvlc.lib和libvlccore.lib,因为vlc.lib和vlccore.lib损坏,其大小不对只有1kb不到,添加到项目中会报错。
4.编译项目时,出现error C2065: “libvlc_media_read_cb”: 未声明的标识符错误,需要在引用vlc.h头文件前添加
#ifdef _WIN32
#include <basetsd.h>
typedef SSIZE_T ssize_t;
#endif
#include "vlc/vlc.h"
5.简单测试用例及代码
// vlcPlayer.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#ifdef _WIN32
#include <basetsd.h>
typedef SSIZE_T ssize_t;
#endif
#include "vlc/vlc.h"
#include <windows.h>
typedef HWND(WINAPI* PROCGETCONSOLEWINDOW)();
int main()
{
//获取控制台句柄
HMODULE hKernel32 = GetModuleHandle(L"kernel32");
PROCGETCONSOLEWINDOW GetConsoleWindow = (PROCGETCONSOLEWINDOW)GetProcAddress(hKernel32, "GetConsoleWindow");
HWND wnd = GetConsoleWindow();
//libVLC一个实例
//libvlc_new 创建 libvlc_release 释放
libvlc_instance_t* inst;
//播放的媒体 libvlc_media_new_path(文件)或libvlc_media_new_location(协议)创建
// libvlc_media_release释放
libvlc_media_t* m;
//vlc播放器
//libvlc_media_player_new_from_media创建 libvlc_media_player_release释放
libvlc_media_player_t* mp;
libvlc_time_t length;
int width;
int height;
int wait_time = 5000;
inst = libvlc_new(0, NULL);
m = libvlc_media_new_location(inst, "file:///china.mp4");
//m = libvlc_media_new_path(inst, "china.mp4");
mp = libvlc_media_player_new_from_media(m);
libvlc_media_release(m);
//设置播放窗口
libvlc_media_player_set_hwnd(mp, wnd);
//ibvlc_media_player_play():播放。
//libvlc_media_player_pause():暂停。
//libvlc_media_player_stop():停止。
libvlc_media_player_play(mp);
Sleep(wait_time);
length = libvlc_media_player_get_length(mp);//获取媒体文件时长
width = libvlc_video_get_width(mp); //获取分辨率宽度
height = libvlc_video_get_height(mp); //获取分辨率高度
Sleep(length - wait_time);
libvlc_media_player_stop(mp);
libvlc_media_player_release(mp);
libvlc_release(inst);
return 0;
}