loops - 媒体基金会:第 6 次循环视频不稳定
问题描述
从 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 次开始分解。
有谁知道怎么回事?
在此先感谢史蒂夫。
解决方案
看来你必须打电话
m_pSession->停止();
循环时在 Start() 之前,以确保稳定性。
令人惊讶的是,如果需要确保 API 的稳健性,这不会在内部发生,但这就是 Media Foundation 的黑暗艺术 :)
推荐阅读
- git - 禁用 (GitGutter) 关于提交 Sublime Text 的消息
- xamarin.forms - Xamarin 使用 lottie 动画形成启动画面
- .htaccess - .htaccess - 重定向到从域 A 到域 B 的相同路径 - 域名中的波兰字母
- unity3d - 如何在 ShaderLab 中缓存通用(所有像素)变量?
- laravel - 在 laravel 中使用 foreach 时如何按降序打印表格?
- angular - Angular 7 ng-select 从函数中获取项目,重复无限次
- python - 返回多个变量的列表理解:排除“__name__”、“__doc__”等
- python - 我如何读取文件夹和子文件夹 *.wav ;以及用于训练模型输入的特征提取?
- mysql - 基于关联列值的唯一约束
- android - 修复 Android 中的 Zip 路径遍历漏洞