VLC - 01 初来乍到 - (基于C++)
程序员文章站
2022-07-14 19:48:10
...
了解
VLC 是一款*、开源的跨平台多媒体播放器及框架,可播放大多数多媒体文件,以及 DVD、音频 CD、VCD 及各类流媒体协议。
VLC官网
代码
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;
}
运行截图:
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;
}
运行截图:
关注
微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。
笔者 - jxd