【问题标题】:how to improve my code to make better video quality?如何改进我的代码以提高视频质量?
【发布时间】:2010-10-24 23:50:18
【问题描述】:

我正在使用以下代码来利用 Windows Media Encoder 来录制屏幕。我使用的是 Windows Vista,屏幕分辨率 1024 × 768, 32-bit。我的问题是,视频可以成功录制,但是当我播放录制的视频时,视频质量不是很好——例如字符非常晦涩。我想知道我应该尝试调整哪些参数以获得更好的录像机视频质量?

我的代码,

            static WMEncoder encoder = new WMEncoder();

            IWMEncSourceGroup SrcGrp;
            IWMEncSourceGroupCollection SrcGrpColl;
            SrcGrpColl = encoder.SourceGroupCollection;
            SrcGrp = (IWMEncSourceGroup)SrcGrpColl.Add("SG_1");

            IWMEncVideoSource2 SrcVid;
            SrcVid = (IWMEncVideoSource2)SrcGrp.AddSource(WMENC_SOURCE_TYPE.WMENC_VIDEO);
            SrcVid.SetInput("ScreenCap://ScreenCapture1", "", "");
            IWMEncFile File = encoder.File;
            File.LocalFileName = "C:\\OutputFile.avi";

            // Choose a profile from the collection.
            IWMEncProfileCollection ProColl = encoder.ProfileCollection;
            IWMEncProfile Pro;
            for (int i = 0; i < ProColl.Count; i++)
            {
                Pro = ProColl.Item(i);
                if (Pro.Name == "Windows Media Video 8 for Local Area Network (384 Kbps)")
                {
                    SrcGrp.set_Profile(Pro);
                    break;
                }
            }

        encoder.Start();

提前致谢, 乔治

【问题讨论】:

  • 格式化完成,如果还有问题请告诉我。 :-)

标签: c# windows video media encoder


【解决方案1】:

视频编码器使用特定的 kbit/秒比率来限制生成的流的大小。 kbits/sec 越少,您获得的细节就越少,因为 DCT 的系数越少,量化值越大。换句话说:您放入视频的 kbits/sec 越多,编码器可以将更多细节存储在流中。

根据您的代码判断,您选择了一个使用 384 kbit/s 的配置文件,这对于 1024*768 视频来说不是很多。您应该尝试其他配置文件或设置您自己想要的比特率。

【讨论】:

  • @emktas,您有什么建议吗?我不是视频专家。 :-)
  • 我认为您的建议是我们可以使用更高 kps 的视频配置文件,对吗?但是如果我错了请纠正我,我没有找到任何更高kps的视频配置文件。 :-(
  • @emktas,我试过了,当我设置更高的 kps 时它可以工作,谢谢!
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 2010-09-14
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多