使用媒体基础 c# 剪切视频剪辑

Cut Video clip using Media foundation c#

我需要剪切一部分视频剪辑,这可以通过 ffmpeg 实现,但不想使用 ffmpeg 并且想严格使用 asp.net 中的媒体基础方法。谁能建议我怎么可能。 要求是要将直播流从结束位置剪切到 4 分钟后,然后保存在视频文件中。我们必须从实时流中剪切视频而不是已经保存的视频。

我可以推荐您使用 ffmpeg 或其他视频编辑器。媒体基础是用于播放或编码视频的低级框架。它不包括任何剪辑视频剪辑的功能。当然,也可以用Media Foundation编写视频剪辑的代码,但需要从头开始编写所有代码。我对 Media Foundation 有丰富的经验,我可以将它与 'LEGO' 块进行比较 - 集合非常 'tiny' 元素。我觉得你的想法实现可能需要半年或更长时间。

顺便说一句 - 您可以通过 Media Foundation Capturing Live-video from Web-camera on Windows 7 and Windows 8 找到我使用相机的源代码,您可以查看代码的复杂性。它支持在两个流上拆分视频 - 观看和其他(例如录制)。可以通过其他流将视频录制到文件中,然后在完成视频录制后创建 Media Foundation Media Session,打开临时视频文件,将位置视频 reader 设置为开启几分钟,然后重写到目标文件中。但是,您必须非常了解 Media Foundation。有一本关于媒体基金会的书。它包括 Media Foundation Media Session 的代码。

从 MP4 文件创建子剪辑的一种方法是使用媒体基础 API 的 Source Reader and Sink Writer,这样您就可以从特定位置从您感兴趣的所有流开始 "reading",然后分别停止。数据将传递给 Sink Writer 实例以生成子剪辑文件。

这可以在有和没有视频重新压缩的情况下完成。请注意,Media Foundation 是本机代码 API,您可能需要一个包装器库,为 ASP.NET.

提供相应的接口

另一种方式是 UWP MediaTranscoder API,具有 TrimStartTime/TrimStopTime 属性。 Transcoding media sample 应该会让您有所了解。