Hallo Leute,
für das Abspielen von Video-Dateien benutzte ich das Media Control Interface,
Das meiste für die Implementierung übernahm ich aus einem Beispiel.
AVI- und WMV-Dateien werden perfekt dargestellt.
Bei MPG-Dateien habe ich gewisse Probleme:
1. das Öffnen und Abspielen des Devices daert viel zu lange.
2. das Bild ist entweder verdeckt, oder wird nicht aktualisiert.
Kann mir jemand helfen?
Bin für jeden Beitrag dankbar!
Ich mein Sourcecode:
für das Abspielen von Video-Dateien benutzte ich das Media Control Interface,
Das meiste für die Implementierung übernahm ich aus einem Beispiel.
AVI- und WMV-Dateien werden perfekt dargestellt.
Bei MPG-Dateien habe ich gewisse Probleme:
1. das Öffnen und Abspielen des Devices daert viel zu lange.
2. das Bild ist entweder verdeckt, oder wird nicht aktualisiert.
Kann mir jemand helfen?
Bin für jeden Beitrag dankbar!
Ich mein Sourcecode:
Code:
void CMediaFileLogisticsFormView::OnBnClickedButtonPlay()
{
if (m_bDeviceOpen == true)
{
PlayMPegVideoDevice();
}
}
// Memberfunktionen
bool CMediaFileLogisticsFormView::OpenMPegVideoDevice()
{
char cmd[300];
// if (m_bDeviceOpen == true)
// {
CloseMPegVideoDevice();
// }
if(m_strFullPathName == "")
{
return false;
}
// MPEG_VIDEO_DEVICE öffnen
wsprintf(cmd, "open \"%s\" alias MPEG_VIDEO_DEVICE type MPEGVideo style child", m_strFullPathName);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann Datei nicht öffnen!");
return false;;
}
// MPEG_VIDEO_DEVICE wurde geöffnet
m_bDeviceOpen = true;
// MPEG_VIDEO_DEVICE handle setzen(Parent)
wsprintf(cmd, "window MPEG_VIDEO_DEVICE handle %lu", m_ctrlAnimateMedial.GetSafeHwnd());
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann window handle nicht setzen");
return false;
}
//Fenstergröße des Animationsfeldes ermitteln
CRect rect;
m_ctrlAnimateMedial.GetClientRect(&rect);
// MPEG_VIDEO_DEVICE Fenster anpassen
wsprintf(cmd, "put MPEG_VIDEO_DEVICE destination at %d %d %d %d", 0, 0, rect.right, rect.bottom);
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann Fenstergröße nicht anpassen");
return false;
}
return true;
}
bool CMediaFileLogisticsFormView::PlayMPegVideoDevice()
{
char cmd[300];
// MPEG_VIDEO_DEVICE abspielen
wsprintf(cmd, "play MPEG_VIDEO_DEVICE from 0");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann Datei nicht abspielen!");
return false;//-1;
}
return true;
}
bool CMediaFileLogisticsFormView::StopMPegVideoDevice()
{
char cmd[300];
wsprintf(cmd, "stop MPEG_VIDEO_DEVICE");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann Datei nicht anhalten!");
return false;
}
return true;
}
bool CMediaFileLogisticsFormView::CloseMPegVideoDevice()
{
if (m_bDeviceOpen == true)
{
char cmd[300];
wsprintf(cmd, "close MPEG_VIDEO_DEVICE");
if (mciSendString(cmd, 0, 0, 0) != 0)
{
AfxMessageBox("MCI-Error: Kann Datei nicht schließen!");
return false;
}
m_bDeviceOpen = false;
}
return true;
}
void CMediaFileLogisticsFormView::OnBnClickedButtonStop()
{
StopMPegVideoDevice();
}
bool CMediaFileLogisticsFormView::PreviewMPegVideoDevice()
{
bool bOK;
bOK = OpenMPegVideoDevice();
if (bOK == true)
{
bOK = PlayMPegVideoDevice();
if (bOK == true)
{
bOK = StopMPegVideoDevice();
}
}
return bOK;
}