【发布时间】:2021-03-30 08:52:17
【问题描述】:
从 github 获取当前媒体基础样本(MF_ProtectedPlayback,但可能是其他样本之一)。
添加了以下内容,以便在结束时循环:
CPlayer::HandleEvent()
{
case MEEndOfPresentation:
CHECK_HR(hr = OnPresentationEnded(pEvent));
// ADV_SW: Loop.
{
static DWORD dbg_count = 0;
dbg_count++;
char title[100];
sprintf_s(title, "Loop: %d", dbg_count);
SetWindowTextA(m_hwndEvent, title);
}
Play();
break;
}
另外,在 CPlayer::StartPlayback 中
...修改后,第二次播放从头开始
// Start from beginning
PROPVARIANT varStart = { 0 };
InitPropVariantFromInt64(0, &varStart);
hr = m_pSession->Start(&GUID_NULL, &varStart);
当我播放示例文件http://advance-software.com/misc/ad.mp4(下载并在本地运行)时
前 5 个循环运行良好,然后在第 6 个循环开始分解。
有人知道怎么回事吗?
提前致谢, 史蒂夫。
【问题讨论】:
-
已测试 Win 10 Home / 64 Insider Preview。内部版本:21343.rs-prerelease.210320-1757
-
尝试与 MFPlayer2 示例相同,它可以正确循环,但是接口太基本,无法满足需要,因为拓扑隐藏在黑盒子内,需要修改它。