如何把avi插入到网页里

如何把avi插入到网页里,第1张

1打开DW选择插入-媒体-activex(c)然后选择AVI文件

2用embed方法插入例如下列格式: <Embed src="url"width="宽度"height="高度"AUTOSTART="TRUE│false" LOOP="TRUE"></Embed>

CDigitalvideo::CDigitalvideo()

{

// 初始化成员变量

m_Open = m_Pause = m_Playing = FALSE

m_DeviceID = 0

}

CDigitalvideo::~CDigitalvideo()

{

Close ()

}

BOOL CDigitalvideo::GetPause ()//是否暂停

{

return m_Pause

}

BOOL CDigitalvideo::Open (CString Filename, CWnd *pWnd, int left, int top,int width,int height)

{

if (!m_Open){//如果m_Open=false,没有打开设备

// 初始化成员变量

m_Open = m_Pause = m_Playing = FALSE

m_DeviceID = 0

// 文件是否存在

CFileStatus Status

if (!CFile::GetStatus (Filename, Status))

return FALSE

// 打开设备

MCI_DGV_OPEN_PARMS MCIOpen

MCIOpen.lpstrDeviceType = "avivideo"//设置播放设备为视频播放设备

MCIOpen.lpstrElementName = (LPSTR) Filename.GetBuffer (0)//文件名

MCIOpen.wDeviceID = NULL

MCIOpen.hWndParent = pWnd->m_hWnd//可播放视频文件窗口指针

MCIOpen.dwStyle = WS_CHILD | WS_VISIBLE

if (mciSendCommand (NULL, MCI_OPEN, MCI_WAIT | MCI_OPEN_TYPE |

MCI_OPEN_ELEMENT | MCI_DGV_OPEN_PARENT | MCI_DGV_OPEN_WS, (DWORD)(LPVOID) &MCIOpen))

return FALSE

m_DeviceID = MCIOpen.wDeviceID

m_Open = TRUE

// 将文件长度设置为帧

MCI_DGV_SET_PARMS MCISet

MCISet.dwTimeFormat = MCI_FORMAT_FRAMES

if (mciSendCommand (m_DeviceID, MCI_SET, MCI_SET_TIME_FORMAT, (DWORD)(LPVOID) &MCISet)){

Close ()

return FALSE

}

// 找到视频文件的开始位置

mciSendCommand (m_DeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL)

//将播放画面置于主窗口之中

MCI_DGV_PUT_PARMS MCIPut

MCIPut.rc.left = left

MCIPut.rc.top = top

MCIPut.rc.right = width

MCIPut.rc.bottom = height

if (mciSendCommand (m_DeviceID, MCI_PUT, MCI_WAIT | MCI_DGV_PUT_CLIENT |

MCI_DGV_PUT_WINDOW | MCI_DGV_RECT, (DWORD)(LPVOID) &MCIPut)){

Close ()

return FALSE

}

}

return TRUE

}

void CDigitalvideo::Close (void)

{

if (m_Open){// 停止播放并关闭设备

if (m_Playing || m_Pause)

mciSendCommand (m_DeviceID, MCI_STOP, NULL, NULL)

mciSendCommand (m_DeviceID, MCI_CLOSE, NULL, NULL)

// 清空成员变量

m_Open = m_Pause = m_Playing = FALSE

m_DeviceID = NULL

}

}

//获得视频文件窗口的宽度

int CDigitalvideo::GetWidth (void)

{

if (m_Open){

MCI_DGV_WHERE_PARMS MCIWhere

if (mciSendCommand (m_DeviceID, MCI_WHERE, MCI_DGV_WHERE_SOURCE,

(DWORD)(LPVOID) &MCIWhere)){

return 0

}

return (int) MCIWhere.rc.right

}

return 0

}

//获得视频文件窗口的高度

int CDigitalvideo::GetHeight (void)

{

if (m_Open){

MCI_DGV_WHERE_PARMS MCIWhere

if (mciSendCommand (m_DeviceID, MCI_WHERE, MCI_DGV_WHERE_SOURCE,

(DWORD)(LPVOID) &MCIWhere)){

return 0

}

return (int) MCIWhere.rc.bottom

}

return 0

}

BOOL CDigitalvideo::Play (BOOL bLoop, BOOL bFullScreen)

{

if (m_Open){

// 如果是视频的尾部则重新开始播放

if (GetFrame () >= GetFrames ())

mciSendCommand (m_DeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL)

// 播放

MCI_DGV_PLAY_PARMS MCIPlay

MCIPlay.dwCallback = NULL

MCIPlay.dwFrom = GetFrame ()

DWORD dwFlags = MCI_FROM

if (bLoop)

dwFlags |= MCI_DGV_PLAY_REPEAT

if (bFullScreen)

dwFlags |= MCI_MCIAVI_PLAY_FULLSCREEN

if (mciSendCommand (m_DeviceID, MCI_PLAY, dwFlags, (DWORD)(LPVOID) &MCIPlay))

return FALSE

m_Pause = FALSE

m_Playing = TRUE

return TRUE

}

return FALSE

}

void CDigitalvideo::Stop (void)

{

if (m_Open &&m_Playing){

mciSendCommand (m_DeviceID, MCI_STOP, NULL, NULL)

mciSendCommand (m_DeviceID, MCI_SEEK, MCI_SEEK_TO_START, NULL)

m_Playing = FALSE

m_Pause = TRUE

}

}

void CDigitalvideo::Pause( void )

{

if (m_Open ){

MCI_DGV_PAUSE_PARMS MCIPause

if (mciSendCommand (m_DeviceID, MCI_PAUSE, 0, (DWORD)(LPVOID) &MCIPause))

return

m_Pause = TRUE

}

}

int CDigitalvideo::GetFrames (void)

{

if (m_Open){

MCI_DGV_STATUS_PARMS MCIStatus

MCIStatus.dwItem = MCI_STATUS_LENGTH

if (mciSendCommand (m_DeviceID, MCI_STATUS, MCI_WAIT |

MCI_STATUS_ITEM, (DWORD)(LPVOID) &MCIStatus))

return 0

return (int) MCIStatus.dwReturn

}

return 0

}

int CDigitalvideo::GetFrame (void)

{

if (m_Open){

MCI_DGV_STATUS_PARMS MCIStatus

MCIStatus.dwItem = MCI_STATUS_POSITION

if (mciSendCommand (m_DeviceID, MCI_STATUS, MCI_WAIT |

MCI_STATUS_ITEM, (DWORD)(LPVOID) &MCIStatus))

return -1

return (int) MCIStatus.dwReturn

}

return -1

}

BOOL CDigitalvideo::IsPlaying ()

{

if (m_Open)

{

MCI_DGV_STATUS_PARMS MCIStatus

MCIStatus.dwItem = MCI_STATUS_MODE

if (mciSendCommand (m_DeviceID, MCI_STATUS, MCI_WAIT |

MCI_STATUS_ITEM, (DWORD)(LPVOID) &MCIStatus))

return FALSE

if (MCIStatus.dwReturn == MCI_MODE_PLAY)

{

m_Playing = TRUE

m_Pause = FALSE

return TRUE

}

else if (MCIStatus.dwReturn == MCI_MODE_PAUSE)

{

m_Playing = TRUE

m_Pause = FALSE

return TRUE

}

else

{

m_Playing = FALSE

m_Pause = FALSE

return FALSE

}

}

return FALSE

}

BOOL CDigitalvideo::SeekTo (int nFrame)

{

if (m_Open){

MCI_SEEK_PARMS MCISeek

MCISeek.dwTo = nFrame

if (m_Playing &&!m_Pause)

mciSendCommand (m_DeviceID, MCI_PAUSE, 0, NULL)

if (mciSendCommand (m_DeviceID, MCI_SEEK, MCI_TO |

MCI_WAIT, (DWORD)(LPVOID) &MCISeek))

return FALSE

if (m_Playing &&!m_Pause)

Play ()

return TRUE

}

return FALSE

}

void CDigitalvideo::Forward (int nFrames)

{

if (m_Open){

if (m_Playing &&!m_Pause)

Pause ()

MCI_DGV_STEP_PARMS MCIStep

MCIStep.dwFrames = nFrames

mciSendCommand (m_DeviceID, MCI_STEP, MCI_DGV_STEP_FRAMES,

(DWORD)(LPVOID) &MCIStep)

}

}

void CDigitalvideo::Backward (int nFrames)

{

if (m_Open){

if (m_Playing &&!m_Pause)

Pause ()

MCI_DGV_STEP_PARMS MCIStep

MCIStep.dwFrames = nFrames

mciSendCommand (m_DeviceID, MCI_STEP, MCI_DGV_STEP_REVERSE |

MCI_DGV_STEP_FRAMES, (DWORD)(LPVOID) &MCIStep)

}

}

int CDigitalvideo::GetSpeed (void)

{

if (m_Open){

MCI_DGV_STATUS_PARMS MCIStatus

MCIStatus.dwItem = MCI_DGV_STATUS_SPEED

if (mciSendCommand (m_DeviceID, MCI_STATUS, MCI_WAIT |

MCI_STATUS_ITEM, (DWORD)(LPVOID) &MCIStatus))

return -1

return (int) MCIStatus.dwReturn

}

return -1

}

void CDigitalvideo::SetSpeed (int nSpeed)

{

if (m_Open){

MCI_DGV_SET_PARMS MCISet

MCISet.dwSpeed = nSpeed

mciSendCommand (m_DeviceID, MCI_SET, MCI_WAIT |

MCI_DGV_SET_SPEED, (DWORD)(LPVOID) &MCISet)

}

}

/*void CDigitalvideo::SetSound (BOOL bSound)

{

if (m_Open)

{

MCI_DGV_SET_PARMS MCISet

MCISet.dwAudio = MCI_SET_AUDIO_ALL

DWORD dwFlags = MCI_SET_AUDIO

if (bSound)

dwFlags |= MCI_SET_ON

else

dwFlags |= MCI_SET_OFF

mciSendCommand (m_DeviceID, MCI_SET, dwFlags, (DWORD)(LPVOID) &MCISet)

}

}

BOOL CDigitalvideo::GetSound (void)

{

if (m_Open)

{

MCI_DGV_STATUS_PARMS MCIStatus

MCIStatus.dwItem = MCI_DGV_STATUS_AUDIO

if (mciSendCommand (m_DeviceID, MCI_STATUS, MCI_WAIT |

MCI_STATUS_ITEM, (DWORD)(LPVOID) &MCIStatus))

return FALSE

if (MCIStatus.dwReturn == MCI_ON)

return TRUE

else

return FALSE

}

return FALSE

}*/

建立一个对话框 IDD_PLAYER_DIALOG

在对话框上单击右键,选择添加类,基类选择CDialog, 类名CPlayer,确定,生成CPlayer类

.

在对话框上单击右键,选择插入Activex控件,拖到底部,选择windows media player,确定

,控件被加入.

关闭资源视图.

选择菜单, 项目->添加类, 在模板中选择"在Activex控件中的MFC类".在"可用的Activex

控件"下拉菜单中选择"Windows Media Player", 在左下方的接口栏中出现可以选择的类

的接口,选择需要的接口即可,这里选择IWMPPlyaer4,单击完成生成类CWMPPlayer4.

打开资源视图,在对话框的wmp控件上单击右键,添加变量, 变量类型输入CWMPPlayer4,变

量名m_ctrlPlayer.

调用m_ctrlPlayer.put_url() 可以播放媒体文件. ------------

-------------------------------------------------------------

件——》新建——》项目,选择MFC应用程序——》名称为player——》确定。

点击应用程序类型——》基于对话框——》完成。

在DIALOG中右击——》插入ACTIVEX控件——》选Windows Media Player ,添加了Windows Media Player 控件ID为IDC_OCX1。

对Windows Media Player控件右击——》添加变量——》变量名为m_wmplayer——》完成。

拉二个按钮到DIALOG中“打开”和“暂停”,双击“打开”输入以下代码:

// TODO: 在此添加控件通知处理程序代码

TCHAR szFileFilter[]= _T("Mp3 File(*.mp3)|*.mp3|MPEG File(*.mpeg)|*.mpeg|Media File(*.asf)|*.asf|Video File(*.dat)|*.dat|MPGA File(*.mpga)|*.mpga|Wave File(*.wav)|*.wav|AVI File(*.avi)|*.avi|Movie File(*.mov)|*.mov|Mid File(*.mid*,rmi)|*.mid*.rmi|Wma File(*.wma)|*.wma|All File(*.*)|*.*||")

CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this)

if (fileDialog.DoModal() == IDOK)

{

CString fileName=fileDialog.GetPathName()

m_wmplayer.put_URL(fileName)

}

到此时一切正常~

然后右击类视图/解决方案—〉添加类—〉选择“Active中的MFC类”—〉选择windows media player <1.0>选择所有接口生成类。

在然后在对话框头文件中(playerDlg.h)添加了以下变量:

CWMPControls m_control

在playerDlg.cpp的OnInitDialog()中添加代码:

m_control = static_cast <CWMPControls>(m_wmPlayer.get_controls())

双击“暂停”输入

// TODO: 在此添加控件通知处理程序代码

m_control.pause()

void CPlayerDlg::OnBnClickedButtonOpen()

{

// TODO: 在此添加控件通知处理程序代码

TCHAR szFileFilter[]= _T("Mp3 File(*.mp3)|*.mp3|MPEG File(*.mpeg)|*.mpeg|Media File(*.asf)|*.asf|Video File(*.dat)|*.dat|MPGA File(*.mpga)|*.mpga|Wave File(*.wav)|*.wav|AVI File(*.avi)|*.avi|Movie File(*.mov)|*.mov|Mid File(*.mid*,rmi)|*.mid*.rmi|Wma File(*.wma)|*.wma|All File(*.*)|*.*||")

CFileDialog fileDialog( TRUE,NULL,NULL,NULL,szFileFilter,this)

if (fileDialog.DoModal() == IDOK)

{

CString fileName=fileDialog.GetPathName()

m_conWMPlayer.put_URL(fileName)

}

}

void CPlayerDlg::OnBnClickedButtonStop()

{

// TODO: 在此添加控件通知处理程序代码

m_CWMPConcontrol.pause()

}

BOOL CPlayerDlg::OnInitDialog()

{

CDialog::OnInitDialog()

//todo

m_CWMPConcontrol=static_cast<CWMPControls>(m_conWMPlayer.get_controls())

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11449884.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存