获取视频的单独帧速率,逐步浏览视频帧并设置某种帧缓冲区以使用视频播放器预制视频播放器的最简单方法是什么? WPF?我知道DirectShow,但对于想要修改视频帧的人来说似乎更有用。我只是希望能够逐帧浏览视频,导航到特定的帧,并将一次播放的多个视频的帧速率标准化(例如,分别具有10 fps,20 fps和30 fps的三个视频以10 fps同时播放。
答案 0 :(得分:2)
在MSDN上,帧步进的信息隐藏在页面底部,与清除 1 操作有关:
https://msdn.microsoft.com/en-us/library/windows/desktop/ee892370(v=vs.85).aspx
应用程序可以通过设置播放来执行帧步进 速率为零,然后传递设置为VT_EMPTY的PROPVARIANT 调用IMFMediaSession :: Start。
当然这些是COM interfaces
,链接正在谈论Enhanced Video Renderer
(EVR)和Windows Media Foundation
,它们几乎没有准备好进入你的WPF应用程序。我确实意识到这就是提问者所寻求的。
所以我猜答案是,虽然这是一个巨大的挑战,但是可以通过p /调用DirectShowLib.dll
来访问Media Foundataion和EVR,从而在WPF中构建一个视频。请参阅本页其他地方提到的WpfMediaKit
。
[edit:]有关帧步进的更多信息: https://msdn.microsoft.com/en-us/library/windows/desktop/bb530107(v=vs.85).aspx#implementingframestepping
1:慢跑控制浏览视频文件
答案 1 :(得分:0)
我担心wpf的媒体播放器没有做你想做的事情。它最接近的是允许你寻找一个特定的时间,而不是一个框架。
值得一看的是wpfmediakit作为创建自定义播放器以逐帧搜索的基础,但这是一个长镜头。
要对各种编解码器进行逐帧控制,则必须使用未为wpf设置的ffmpeg