繁体   English   中英

使用DirectShow在C#中播放,编辑然后重播视频

[英]Playing, editing then replaying a video in c# using directshow

如上所述,我正在寻找一个具有两个视频播放器的基本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 Media Player上播放的视频中获取图像

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

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

因此,我希望播放视频,提取帧并执行一些处理,然后将所有内容放回一起以在第二个播放器中播放。

感谢您的任何建议:)

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM