帮小弟我改改下面这段视频播放的程序,好吗?非常感谢
求助:各位大哥帮我改改下面这段视频播放的程序,好吗?非常感谢!
//播放所有wave,mps,和视频文件
class CVideo
{
private:
/// direct show
IGraphBuilder* m_pGraph; // Filter对象
IMediaControl* m_pMediaControl; // 流媒体播放器
IMediaPosition* m_pMediaPosition; // 播放位置
IMediaEvent* m_pEvent; // 流媒体触发事件
IVideoWindow* m_pViewWin; // 播放视频的窗口
HWND m_hWnd; // 窗口句柄
BOOL m_isLoop; // 是否循环播放
/// direct sound
LPDIRECTSOUND8 m_pSound; // 声音硬件指针
LPDIRECTSOUNDBUFFER m_pSBuffer; // 声音缓冲
DSBUFFERDESC m_dsdesc;
//初始化流媒体播放
HRESULT InitStream();
//初始音效播放
HRESULT InitSound();
//载入指定文件名的音乐,视频文件
public:
bool readfile( LPSTR pFileName );
EnumVideo m_Id;
//构造函数,初始化各接口,为播放作准备
CVideo( HWND hWnd = NULL );
virtual ~CVideo();
//播放Mp3音乐
bool Play( LPSTR pFileName , EnumVideo Id, BOOL isLoop = false );
};
#include "..\\H\\Video.h "
//初始化各接口,为播放作准备
CVideo::CVideo( HWND hWnd )
{
/// direct show
// 先赋空值,在初始化
m_pGraph = NULL; // 流过滤器
m_pMediaControl = NULL; // 流媒体播放器
m_pMediaPosition = NULL; // 播放位置
m_pEvent = NULL; // 流媒体触发事件
m_pViewWin = NULL;
m_hWnd = hWnd; // 播放视频的窗口
/// direct sound
// 赋空
m_pSound = NULL; // 音效的硬件指针
m_pSBuffer = NULL;
InitSound();
// 初始化流媒体播放
InitStream();
}
//初始化流媒体播放
HRESULT CVideo::InitStream()
{
// 创建过滤器
CoInitialize( NULL );
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC, IID_IGraphBuilder, (void**)&m_pGraph);
// 创建控制器
m_pGraph-> QueryInterface( IID_IMediaControl, ( void** )&m_pMediaControl );
// 创建播放位置
m_pGraph-> QueryInterface( IID_IMediaPosition, ( void** )&m_pMediaPosition );
// 创建事件响应接口
m_pGraph-> QueryInterface( IID_IMediaEvent, ( void** )&m_pEvent );
// 创建播放窗口
m_pGraph-> QueryInterface( IID_IVideoWindow, ( void** )&m_pViewWin );
return S_OK;
}
//载入指定文件名的音乐,视频文件
bool CVideo::readfile( LPSTR pFileName )
{
WCHAR wstrSoundPath[MAX_PATH];
CHAR strSoundPath[MAX_PATH];
static HWND hDrain = 0;
switch( m_Id )
{
case VIDEO_MOVING:
// 得到sound文件夹名
GetCurrentDirectory(MAX_PATH, strSoundPath);
strcat(strSoundPath, "\\ ");
strcat(strSoundPath, pFileName);
//变为宽字节,防止中文路径有错误
MultiByteToWideChar(CP_ACP, 0, strSoundPath, -1, wstrSoundPath, MAX_PATH);
if(S_OK!= m_pGraph-> RenderFile(wstrSoundPath, NULL)) //MustBe NULL
return false;
//播放所有wave,mps,和视频文件
class CVideo
{
private:
/// direct show
IGraphBuilder* m_pGraph; // Filter对象
IMediaControl* m_pMediaControl; // 流媒体播放器
IMediaPosition* m_pMediaPosition; // 播放位置
IMediaEvent* m_pEvent; // 流媒体触发事件
IVideoWindow* m_pViewWin; // 播放视频的窗口
HWND m_hWnd; // 窗口句柄
BOOL m_isLoop; // 是否循环播放
/// direct sound
LPDIRECTSOUND8 m_pSound; // 声音硬件指针
LPDIRECTSOUNDBUFFER m_pSBuffer; // 声音缓冲
DSBUFFERDESC m_dsdesc;
//初始化流媒体播放
HRESULT InitStream();
//初始音效播放
HRESULT InitSound();
//载入指定文件名的音乐,视频文件
public:
bool readfile( LPSTR pFileName );
EnumVideo m_Id;
//构造函数,初始化各接口,为播放作准备
CVideo( HWND hWnd = NULL );
virtual ~CVideo();
//播放Mp3音乐
bool Play( LPSTR pFileName , EnumVideo Id, BOOL isLoop = false );
};
#include "..\\H\\Video.h "
//初始化各接口,为播放作准备
CVideo::CVideo( HWND hWnd )
{
/// direct show
// 先赋空值,在初始化
m_pGraph = NULL; // 流过滤器
m_pMediaControl = NULL; // 流媒体播放器
m_pMediaPosition = NULL; // 播放位置
m_pEvent = NULL; // 流媒体触发事件
m_pViewWin = NULL;
m_hWnd = hWnd; // 播放视频的窗口
/// direct sound
// 赋空
m_pSound = NULL; // 音效的硬件指针
m_pSBuffer = NULL;
InitSound();
// 初始化流媒体播放
InitStream();
}
//初始化流媒体播放
HRESULT CVideo::InitStream()
{
// 创建过滤器
CoInitialize( NULL );
CoCreateInstance(CLSID_FilterGraph, NULL,
CLSCTX_INPROC, IID_IGraphBuilder, (void**)&m_pGraph);
// 创建控制器
m_pGraph-> QueryInterface( IID_IMediaControl, ( void** )&m_pMediaControl );
// 创建播放位置
m_pGraph-> QueryInterface( IID_IMediaPosition, ( void** )&m_pMediaPosition );
// 创建事件响应接口
m_pGraph-> QueryInterface( IID_IMediaEvent, ( void** )&m_pEvent );
// 创建播放窗口
m_pGraph-> QueryInterface( IID_IVideoWindow, ( void** )&m_pViewWin );
return S_OK;
}
//载入指定文件名的音乐,视频文件
bool CVideo::readfile( LPSTR pFileName )
{
WCHAR wstrSoundPath[MAX_PATH];
CHAR strSoundPath[MAX_PATH];
static HWND hDrain = 0;
switch( m_Id )
{
case VIDEO_MOVING:
// 得到sound文件夹名
GetCurrentDirectory(MAX_PATH, strSoundPath);
strcat(strSoundPath, "\\ ");
strcat(strSoundPath, pFileName);
//变为宽字节,防止中文路径有错误
MultiByteToWideChar(CP_ACP, 0, strSoundPath, -1, wstrSoundPath, MAX_PATH);
if(S_OK!= m_pGraph-> RenderFile(wstrSoundPath, NULL)) //MustBe NULL
return false;