欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

VLC - 01 初来乍到 - (基于C++)

程序员文章站 2022-07-14 19:48:10
...

了解

     VLC 是一款*、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。

     VLC官网

     VLC_SDK

代码

     1、小例

          下列代码为基于vlc显示播放本地mp4文件。

#include <Windows.h>

#include "vlc/libvlc.h"
#include "vlc/vlc.h"
#include "vlc/libvlc_media_player.h"
#include "vlc/libvlc_media.h"

int main(int argc, char* argv[])
{
	libvlc_instance_t *     vlc_ins = nullptr;
	libvlc_media_player_t * vlc_player = nullptr;
	libvlc_media_t *        vlc_media = nullptr;

	// 创建一个VLC实例
	vlc_ins = libvlc_new(0,nullptr);
	if (vlc_ins != nullptr)
	{
		// 创建一个VLC播放器
		vlc_player = libvlc_media_player_new(vlc_ins);
		if (vlc_player != nullptr)
		{
			// 通过文件路径创建一个媒体实例,这里是我的测试文件
			vlc_media = libvlc_media_new_path(vlc_ins, "./3.mp4");
			if (vlc_media != nullptr)
			{
				// 解析媒体实例
				libvlc_media_parse(vlc_media);

				// 把打开的媒体文件设置给播放器
				libvlc_media_player_set_media(vlc_player, vlc_media);

				// 释放media
				libvlc_media_release(vlc_media);

				// 开始播放视频
				libvlc_media_player_play(vlc_player);

				// 此处若没有暂停10秒则会直接退出程序。暂停程序10秒会使得视频播放10秒。
				Sleep(10000);

				// 停止
				libvlc_media_player_stop(vlc_player);
			}
			// 释放
			libvlc_media_player_release(vlc_player);
			vlc_player = nullptr;
		}
		// 释放
		libvlc_release(vlc_ins);
		vlc_ins= nullptr;
	}
	return 0;
}

     
          运行截图:
VLC - 01 初来乍到 - (基于C++)

     2、基于Qt简易改良

          将vlc在QWidget播放

#include "vlc/libvlc.h"
#include "vlc/vlc.h"
#include "vlc/libvlc_media_player.h"
#include "vlc/libvlc_media.h"

int main(int argc, char* argv[])
{
	QApplication a(argc, argv);
	QWidget *Widget = new QWidget;
	Widget->show();

	libvlc_instance_t *     vlc_ins = nullptr;
	libvlc_media_player_t * vlc_player = nullptr;
	libvlc_media_t *        vlc_media = nullptr;

	// 创建一个VLC实例
	vlc_ins = libvlc_new(0,nullptr);
	if (vlc_ins != nullptr)
	{
		// 创建一个VLC播放器
		vlc_player = libvlc_media_player_new(vlc_ins);
		if (vlc_player != nullptr)
		{
			// 通过文件路径创建一个媒体实例,这里是我的测试文件
			vlc_media = libvlc_media_new_path(vlc_ins, "./3.mp4");
			if (vlc_media != nullptr)
			{
				// 解析媒体实例
				libvlc_media_parse(vlc_media);

				// 把打开的媒体文件设置给播放器
				libvlc_media_player_set_media(vlc_player, vlc_media);

				// 释放media
				libvlc_media_release(vlc_media);
				vlc_media = nullptr;

				// 显示在QWidget上
				libvlc_media_player_set_hwnd(vlc_player, (void *)(Widget->winId()));

				// 开始播放视频
				libvlc_media_player_play(vlc_player);

				// 进入Qt事件循环。这里代码仅为演示如何在QWidget显示,可能会造成后续vlc的一些内存无法释放
				return a.exec();

				// 停止
				libvlc_media_player_stop(vlc_player);
			}
			// 释放
			libvlc_media_player_release(vlc_player);
			vlc_player = nullptr;
		}
		// 释放
		libvlc_release(vlc_ins);
		vlc_ins = nullptr;
	}
	return 0;
}

     
          运行截图:
VLC - 01 初来乍到 - (基于C++)

关注

微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。

笔者 - jxd

相关标签: VLC