我需要剪切视频片段的一部分,这可能是由ffmpeg但不想使用ffmpeg并且想要在asp.net中严格使用Media Foundation方法。任何人都可以建议我怎么可能。 要求是想要将实时流从结束位置切换到4分钟后再保存在视频文件中。我们必须从实时流中剪切视频,而不是已经保存的视频。
答案 0 :(得分:5)
我建议您使用ffmpeg或其他视频编辑器。 Media Foundation是用于播放或编码视频的低级框架。它不包括任何剪切视频剪辑的功能。当然,可以使用Media Foundation编写用于剪切视频的代码,但它需要从头开始编写所有代码。我对Media Foundation有丰富的经验,我可以将它与乐高'积木 - 收集非常小'元素。我认为实施你的想法需要半年或更长时间。
顺便说一下 - 您可以通过Media Foundation Capturing Live-video from Web-camera on Windows 7 and Windows 8找到使用相机的源代码,您可以查看代码的复杂性。它支持在两个流上分割视频 - 查看和其他(例如录制)。可以通过其他流将视频录制到文件中,然后在完成视频录制后创建Media Foundation Media Session,打开临时视频文件,将位置视频阅读器设置为开启几分钟,然后重写到目标文件中。但是,您必须非常了解Media Foundation。有一本关于媒体基金会的书。它包括Media Foundation Media Session的代码。
答案 1 :(得分:0)
从MP4文件创建子剪辑的一种方法是使用Media Foundation API的Source Reader和Sink Writer,以便您开始阅读"从你所关注的所有流中,从某个位置分别停止。数据将传递给Sink Writer实例以生成子剪辑文件。
这可以在有和没有视频重新压缩的情况下完成。请注意,Media Foundation是本机代码API,您可能需要一个包装库,为ASP.NET提供相应的接口。
另一种方式是UWP MediaTranscoder API,具有TrimStartTime / TrimStopTime属性。 Transcoding media sample应该为您提供见解。