Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows mobile Windows Mobile Directshow:指定WMV视频捕获的比特率/质量_Windows Mobile_Video_Directshow_Capture_Bitrate - Fatal编程技术网

Windows mobile Windows Mobile Directshow:指定WMV视频捕获的比特率/质量

Windows mobile Windows Mobile Directshow:指定WMV视频捕获的比特率/质量,windows-mobile,video,directshow,capture,bitrate,Windows Mobile,Video,Directshow,Capture,Bitrate,我被难住了,我真的希望有人能给我指出正确的方向 我目前正在Windows Mobile中捕获视频,并使用WMV 9 DMO(CLSID_CWMV9EncMediaObject)对其进行编码。这一切都很好,但输出视频的比特率太高,导致视频文件太大,无法满足我的需要 最终,我的目标是模仿微软相机捕获对话框在“消息传递”质量模式(64 Kbps)中从我的C++代码中输出的视频设置。目前,我的代码输出一个比特率为352kbps的WMV文件。 我能找到的唯一一个使用WMV9 DMO指定捕获比特率的例子是。

我被难住了,我真的希望有人能给我指出正确的方向

我目前正在Windows Mobile中捕获视频,并使用WMV 9 DMO(CLSID_CWMV9EncMediaObject)对其进行编码。这一切都很好,但输出视频的比特率太高,导致视频文件太大,无法满足我的需要

最终,我的目标是模仿微软相机捕获对话框在“消息传递”质量模式(64 Kbps)中从我的C++代码中输出的视频设置。<强>目前,我的代码输出一个比特率为352kbps的WMV文件。 我能找到的唯一一个使用WMV9 DMO指定捕获比特率的例子是。该代码的基本思想是使用propertybag将比特率写入DMO的属性

更新:在windows mobile中,我能找到的最接近于比特率的编解码器属性是“g_wszwmvcvrquality”。微软对这个属性的描述让我非常困惑:它基本上似乎说一个更高的数字等于一个更高的质量,但它绝对没有解释每个数字的细节。当我试图通过WMV9 DMO的propertybag将此属性设置为类似“1”的值时,我遇到了-2147467259(未知)错误

总结一下:在windows mobile平台上指定通过directshow(wmv9)捕获的视频的比特率/质量的基本策略是什么? 我听说(或想知道)以下方法:

  • 使用propertybag更改编码器DMO对应于比特率/质量的属性(当前失败)
  • 创建您自己的自定义转码器/编码器来指定它。这似乎是不必要的,因为WMV编码器工作得很好——它的比特率太高了
  • VIDEOINFOHEADER有一个比特率属性,但我怀疑在这里指定新的设置不会改变实际的编码过程,因为我认为文件属性在编码之后才会起作用
  • 有什么建议吗

    附言: 我会发布特定的源代码,但在这一点上,它可能会混淆更多,而不是它的帮助,因为我在如何做到这一点上苦苦挣扎。在这一点上,我只是想验证一下总体策略


    谢谢

    好的,我在设置propertybag值时绕过了这个错误(方法1),现在我可以通过编程方式设置视频“质量”,而不会发生意外

    我做的事情是无序的。如果在将WMV9 DMO编码器添加到图形中之后,但在调用renderstream之前,您可以按照我描述(并链接到)的方式成功更改设置。使用一个propertybag和一个变体来更改DMO的(同样,我使用的是CLSID_DMOWrapperFilter)g_wszWMVCVBRQuality属性。对于Windows Mobile,该全局变量在Windows Mobile 6 SDK的wmcodestrs.h文件中定义

    基本上,设置的数字越低,质量就越差。正如博士女士所说;)
    例如,将其设置为1会生成看起来非常糟糕的视频


    另一方面,我的dshow代码视频和CCD生成的视频之间的大小差异不是由于视频馈送的比特率,而是由于视频文件中的音频流。根据VLC媒体播放器,CCD的视频在8000hz时为8位音频,而我的代码的视频在22050hz时为16位音频。大尺寸差异!现在我要弄清楚如何降低音频设置:(

    您可以发布一些您当前拥有的代码吗?@Landstander,您是否找到了降低音频设置的方法?