微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

媒体基础:循环视频在第 6 次运行时不稳定

如何解决媒体基础:循环视频在第 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->Stop();

循环时在 Start() 之前以确保稳定性。

如果要求确保 API 稳健性,这不会在内部发生,但这是 Media Foundation 的黑暗艺术:)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。