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

时间:2011-03-15 23:20:21

标签: c# .net visual-studio video

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

C#中是否有可以执行此操作的内置库?我需要Windows Media Format SDK吗? 有没有人有这方面的经验?

我可以使用像FFmpeg这样的东西吗?

2 个答案:

答案 0 :(得分:2)

您必须对文件进行解码和重新编码(=转码)才能执行此操作。通过这样做,您将固有地降低质量,因为您正在处理已经压缩的基础。

如果您需要高度控制,一种方法是使用C#的DirectShow包装器,即DirectShow.NET。那么你只需要定义一个简单的转码图。

实际上,最简单的方法是Expression Encoder(Windows Media Encoder的后继者),它有一个简单的托管API,并且比集成DirectShow要少得多。

有一篇摘要文章here。一个简单的转码工作看起来像这样(来自文章的样本,只改变了预设):

      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();

答案 1 :(得分:1)

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

但是您可以安装Windows Media 9 Encoder SDK并在C#中创建适当的对象来进行转换。请参阅CodeProject.com - Convert MP3, MPEG, AVI to Windows Media Formats了解起点。即使该链接以非WMV文件开头,Windows Media Encoder也不会限制输入文件格式(至少在我使用VBScript编码批处理文件时)。

N.B如果您在Vista或Win7上使用WM9Encoder,则可能需要此修补程序 - 请参阅TechNet - issues in using Windows Media Encoder 9 Series on Windows 7