0

如上所述,我希望创建一个带有两个视频播放器的基本 Windows.Forms GUI,一个显示原始视频,另一个显示编辑后的版本。考虑使用 C#,但如果有特殊原因,我愿意使用 C/C++,它也不必是 Windows.Forms,但由于它不需要在视觉上特别令人印象深刻,我认为它会是最好的原因是简单/我在这方面有一点经验(虽然不是很多年)。

目前我正在使用 AxWindowsMediaPlayer 控件:

    private void loadMedia_btn_Click(object sender, EventArgs e)
    {         
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        openFileDialog1.AddExtension = true;
        openFileDialog1.DefaultExt = "*.*";
        openFileDialog1.ShowDialog();

        initialVideoPlayer.URL = openFileDialog1.FileName;
        string fileName = openFileDialog1.FileName;
    }

快速浏览了其他工具,例如 DirectShow 和 OpenCV(主要用于编辑),但我不确定最好的方法,因为我似乎不能很容易地从 WMP 控件中提取帧,我没有知道是否有更简洁的方法吗?一个问题是实验室中的计算机似乎没有 DirectX(或者至少不是新版本),所以我不确定 DirectShow 是否可以工作。

我查看了各种问题,例如:

从 C# 中 Windows 媒体播放器上播放的视频中获取图像

C# Windows 窗体从嵌入的 Windows Media Player 捕获图像

但他们似乎创建的图像看起来并不理想,因为我想要提取每一帧以便处理它们(应用插值,希望运动估计,边缘检测可能)。

所以我正在寻找播放视频,提取帧并执行一些处理,然后将所有内容重新组合在一起以在第二个播放器中播放。

感谢您的任何建议:)

4

1 回答 1

0

您可以使用自定义转换 DirectShow 过滤器来执行视频处理,或者使用带有回调的 Sample Grabber 过滤器直接在您的代码中执行处理(在 C# 中可能会很慢,但您可以使用英特尔 IPP 调用来使其非常快)。

要编辑视频,您可以使用带有源、样本采集器和编码器/复用器或 DirectShow 编辑服务的简单图形(如果您计划在未来提供更多功能)。

于 2014-12-08T12:37:58.397 回答