效果图如下:
关于视频操作的封装 使用了VLC库,分享至此
头文件
#pragma once
#include"pch.h"
#include "vlc.h"
#pragma comment(lib,"libvlccore.lib")
#pragma comment(lib,"libvlc.lib")
class CPlay
{
public:
/*
* 默认构造函数
*/
CPlay()
{
m_pVlcPlayer = nullptr;
m_pVlcInstance = nullptr;
m_hWnd = nullptr;
}
/*
* 默认析构函数
*/
~CPlay()
{}
/*
* 播放指定路径的视频
* @param szFilePath 视频的路径
* @return TODO:
*/
bool Play(char *szFilePath);
bool Pause();
bool Stop();
bool Init();
void SetPlayWnd(HWND hWnd)
{
m_hWnd = hWnd;
}
private:
libvlc_media_player_t *m_pVlcPlayer;
libvlc_instance_t *m_pVlcInstance;
HWND m_hWnd;
};
CPP文件
#include "pch.h"
#include "CPlay.h"
bool CPlay::Play(char *szFilePath)
{
bool bRet = false;
libvlc_media_t *pVlcMedia = nullptr;
do
{
if (0 == strlen(szFilePath))
break;
if (!m_pVlcInstance)
if (!Init())
break;
if (pVlcMedia = libvlc_media_new_path(m_pVlcInstance, szFilePath))
{
if (m_pVlcPlayer = libvlc_media_player_new_from_media(pVlcMedia))
{
if (m_hWnd != nullptr)
libvlc_media_player_set_hwnd(m_pVlcPlayer, m_hWnd);
if (-1 != libvlc_media_player_play(m_pVlcPlayer))
bRet = true;
}
}
} while (false);
if (pVlcMedia)
{
libvlc_media_release(pVlcMedia);
}
return bRet;
}
bool CPlay::Pause()
{
bool bRet = false;
do
{
if (m_pVlcPlayer)
{
if (libvlc_media_player_can_pause(m_pVlcPlayer))
{
libvlc_media_player_pause(m_pVlcPlayer);
bRet = true;
}
}
} while (false);
return bRet;
}
bool CPlay::Init()
{
bool bRet = true;
if (!m_pVlcInstance)
{
m_pVlcInstance = libvlc_new(0, nullptr);
if (!m_pVlcInstance)
{
bRet = false;
}
}
return bRet;
}
bool CPlay::Stop()
{
bool bRet = false;
do
{
libvlc_media_player_stop(m_pVlcPlayer);
libvlc_media_player_release(m_pVlcPlayer);
m_pVlcPlayer = nullptr;
} while (false);
return bRet;
}