libvlc简单使用范例

libvlc关键库函数

创建实例
libvlc_new()
加载媒体
libvlc_media_new_path()/libvlc_media_new_location()(file:///、http://、rtsp://、screen://)
创建播放器
libvlc_media_player_new_from_media()
设置播放窗口
libvlc_media_player_set_hwnd()
开始播放
libvlc_media_player_play()
获取播放长度
libvlc_media_player_get_length()
获取播放媒体的宽/高
libvlc_video_get_width()/libvlc_video_get_height()
获取播放音量
libvlc_audio_get_volume()
设置播放的音量
libvlc_audio_set_volume()
获取播放位置
libvlc_media_player_get_position()
设置播放位置
libvlc_media_player_set_position()
暂停播放
libvlc_media_player_pause()
停止播放
libvlc_media_player_stop()
释放播放器
libvlc_media_player_release()
释放媒体
libvlc_media_release()
释放实例
libvlc_release()

简单代码范例

#include <iostream>
#include <cstring>
#include <conio.h>
#include "vlc.h"	// vlc只需要包含这个头文件即可
#include <Windows.h>

using namespace std;

string unicode2Utf8(wstring strIn) {
	string str;

	str.resize(strIn.size() * 3);
	int length = ::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), NULL, 0, NULL, NULL);
	str.resize(length + 1);
	length = ::WideCharToMultiByte(CP_UTF8, 0, strIn.c_str(), strIn.size(), (LPSTR)str.c_str(), length, NULL, NULL);

	return str;
}

int main() {

	// libvlc库使用范例
	// 1、创建实例
	int argc = 1;
	char* argv[2];
	argv[0] = (char*)"--ignore-config";	// 忽略配置
	libvlc_instance_t* instance =  libvlc_new(argc, argv);
	string file = unicode2Utf8(L"file:///C:\\Users\\xxxx\\Desktop\\测试.mp4");

	// 2、打开文件 加载媒体
	//libvlc_media_t* media = libvlc_media_new_path(instance, file.c_str());	// path是以当前程序/当前工程为路径去寻找文件
	libvlc_media_t* media = libvlc_media_new_location(instance, file.c_str());	// location是通过绝对路径寻找文件 不可使用相对路径 推荐使用该方式
	
	// 3、创建播放器
	libvlc_media_player_t* player =  libvlc_media_player_new_from_media(media);

	// 4、开始播放
	int ret = 0;
	do {
		// 播放视频
		ret = libvlc_media_player_play(player);
		if (ret != 0) {
			cout << "播放视频错误!" << endl;
			break;
		}

		// 4.1、获取视频音量
		int vol = -1;
		while (vol == -1) {
			Sleep(10);
			vol = libvlc_audio_get_volume(player);
			cout << "音量为:" << vol << endl;
		}

		// 4.2、获取视频时长 单位:ms
		libvlc_time_t time = libvlc_media_player_get_length(player);
		cout << "视频时长:" << time << "毫秒" << endl;
		time /= 1000;
		printf("%02d:%02d:%02d\n", (int)time/3600, (int)time/60, (int)time%60);

		// 4.3、获取视频宽高
		int width = libvlc_video_get_width(player);
		int height = libvlc_video_get_height(player);
		cout << "视频宽:" << width << " 视频高:" << height << endl;

		// 4.4、获取播放位置
		while (!_kbhit()) {
			printf("%f\n", 100.0 * libvlc_media_player_get_position(player));
			Sleep(500);
		}

		getchar();
		// 视频暂停
		libvlc_media_player_pause(player);
		getchar();
		// 视频继续播放
		libvlc_media_player_play(player);
		getchar();
		// 视频停止
		libvlc_media_player_stop(player);

	} while (0);

	// 这三个的释放顺序与创建顺序相反!
	// 5、释放播放器
	libvlc_media_player_release(player);

	// 6、释放媒体
	libvlc_media_release(media);

	// 7、释放实例
	libvlc_release(instance);
	
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值