我没有视频处理API的经验,我很难找到这个问题的答案。我的目标是创建能够从所选文件的选定部分创建视频的程序。如果DirectShow能够移除视频的某些部分或者删除一些部分以将它们合并为新的更短的视频,我找不到答案。
答案 0 :(得分:1)
DirectShow编辑服务(DES)正是您所询问的内容。这基本上是Windows Movie Maker的引擎,它是DirectX 8以来DirectShow的一部分。你可以用一个或多个视频和音频轨道创建时间轴,将一个或不同文件的部分放在那里,然后播放或渲染到文件。对于某些格式,它甚至支持无需重新压缩的渲染。 DES已有多年,但现在已被淘汰。
在纯DirectShow中,通过在适当的输出引脚上使用IMediaSeeking接口寻找所需的起始点并处理所需的文件部分,仍然可以实现。
答案 1 :(得分:0)
AFAIK,DirectShow无法开箱即用。您似乎正在开发视频编辑应用程序。首先,您应该开发一种能够提供从 - 到(以时间或帧为单位)并且能够逐帧播放的方式的播放器。有了这样的玩家,用户将能够选择他选择的片段。一种方法是使用或不使用DShow开发解码部分并使用DShow渲染部分,因为它更容易。渲染部分可能需要连接到音频和/或视频渲染器的自定义源滤镜。此类自定义源过滤器应具有用于配置和接收未压缩数据的自定义接口。解码部分应该具有前面提到的用于播放片段和逐帧步进的功能,因此您可以控制播放并提供帧精确文件片段的选择(以便稍后导出到一个文件)。
该应用程序的第二部分是用于从选定的片段创建新的视频文件。你有两个选择。您可以重新编码所有这些片段。通过这样做,你将失去质量。此外,您必须首先通过告诉他输入是什么以及输出格式是什么来配置编码器。根据所选的编码器,这可能是微不足道的,也可能相当复杂。第二个选项是从压缩样本中创建新视频。在这里,您必须注意使用关键帧(视频流)启动此类文件。此外,您还需要第三方SDK来执行此类任务,或者如果您熟悉生成的容器格式体系结构,则可以手动执行此操作。例如,如果源格式为ASF / WMV文件,则Windows Media Format SDK提供了一种方法。如果没有,关于视频,你将不得不以某种方式解决它。
如果您要这样做,请为相当多的编码做好准备。