C# 如何在C中更改WMV文件的分辨率#

C# 如何在C中更改WMV文件的分辨率#,c#,.net,visual-studio,video,C#,.net,Visual Studio,Video,我有一个C#应用程序,我希望能够读入WMV文件,然后写出分辨率/质量降低的WMV文件 是否有任何C#的内置库可以做到这一点?我需要Windows Media Format SDK吗? 有人有这方面的经验吗 我可以使用FFmpeg这样的工具吗?我认为.Net Framework中没有任何类处理WMV文件的转码 但您可以在C#中安装并创建适当的对象来进行转换。请参阅以获取起点。即使该链接以非WMV文件开始,Windows Media编码器也不会限制输入文件格式(至少在我使用VBScript编码批处理

我有一个C#应用程序,我希望能够读入WMV文件,然后写出分辨率/质量降低的WMV文件

是否有任何C#的内置库可以做到这一点?我需要Windows Media Format SDK吗? 有人有这方面的经验吗


我可以使用FFmpeg这样的工具吗?

我认为.Net Framework中没有任何类处理WMV文件的转码

但您可以在C#中安装并创建适当的对象来进行转换。请参阅以获取起点。即使该链接以非WMV文件开始,Windows Media编码器也不会限制输入文件格式(至少在我使用VBScript编码批处理文件时)


注意:如果您在Vista或Win7上使用WM9Encoder,您可能需要修补程序-请参阅,您必须对文件进行解码和重新编码(=转码)才能执行此操作。这样做,你将内在地降低质量,因为你是在一个已经压缩的基础上工作的

如果需要高度控制,一种方法是使用C#的DirectShow包装器,即。然后您只需要定义一个简单的代码转换图

实际上,最简单的方法是使用(Windows Media Encoder的后续产品),它有一个简单的托管API,应该比集成DirectShow省力得多

有一篇总结文章。一个简单的代码转换作业如下所示(本文中的示例,仅更改了预设):

      MediaItem src = new MediaItem
          (@"C:\WMdownloads\AdrenalineRush.wmv");
      Job job = new Job();
      job.MediaItems.Add(src);
      job.ApplyPreset(Presets.VC1WindowsMobile);
      job.OutputDirectory = @"C:\EncodedFiles";
      job.Encode();