happydeer的留言板

happydeer 南京大学 2020-01-02 06:48:59
大家好,这里是我的留言板,如果有问题,欢迎大家留言,我会第一时间进行回复
...全文
3 点赞 收藏 1
写回复
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; }
回复 点赞
发动态
发帖子
community_281
创建于2021-05-27

21

社区成员

25.9w+

社区内容

社区公告
暂无公告