happydeer的留言板

happydeer
博客专家认证
2020-01-02 06:48:59
大家好,这里是我的留言板,如果有问题,欢迎大家留言,我会第一时间进行回复
...全文
138 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_45441259 2020-09-20
  • 打赏
  • 举报
回复
陆老师您好!我使用Microsoft Media Foundation,基于(https://docs.microsoft.com/zh-cn/windows/win32/medfound/how-to-play-unprotected-media-files) “如何使用Media Foundation播放媒体文件”的例子。我希望定位到某一帧(或某个时间)并且定格在这一帧(或这个时间)。 我是这样做的:首先正常播放,然后暂停,然后使用了微软例程中的HRESULT SkipToPosition(MFTIME SeekTime),进行视频跳转到指定位置后,这样可以暂停在指定位置,但是视频窗口需要刷新时,使用IMFVideoDisplayControl::RepaintVideo() 返回值为S_OK,但无刷新效果。这是什么原因?如何修改? ``` HRESULT SkipToPosition (MFTIME SeekTime, IMFMediaSession *pMediaSession) { PROPVARIANT var; PropVariantInit(&var); IMFRateControl *pRateControl = NULL; // Get the rate control service. HRESULT hr = MFGetService(pMediaSession, MF_RATE_CONTROL_SERVICE, IID_PPV_ARGS(&pRateControl)); // Set the playback rate to zero without thinning. if(SUCCEEDED(hr)) { hr = pRateControl ->SetRate( FALSE, 0.0F); } // Create the Media Session start position. if( SeekTime == PRESENTATION_CURRENT_POSITION ) { var.vt = VT_EMPTY; } else { var.vt = VT_I8; var.hVal.QuadPart = SeekTime; } // Start the Media Session. if(SUCCEEDED(hr)) { hr = pMediaSession->Start( NULL, &var); } // Clean up. SafeRelease(&pRateControl); PropVariantClear(&var) return hr; }

590

社区成员

发帖
与我相关
我的任务
社区描述
提出问题
其他 技术论坛(原bbs)
社区管理员
  • community_281
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧