gpt4 book ai didi

encoding - DirectShow 中的实时视频编码

转载 作者:行者123 更新时间:2023-12-04 13:55:28 25 4
gpt4 key购买 nike

我开发了一个使用 DirectShow 从外部设备捕获视频的 Windows 应用程序。图像分辨率为 640x480,未经压缩保存的视频尺寸非常大(大约每秒 27MB)。

我的目标是尽可能地减小这个大小,所以我正在寻找一种可以让我实时压缩视频的编码器。它可以是 H.264、MPEG-2 或其他任何东西。它必须允许我将视频保存到磁盘,如果我还可以通过网络(Wi-Fi,因此大小应该在每秒 1MB 左右,或更小)实时流式传输,那将是最好的。显着的质量损失将是 Not Acceptable 。

我发现为这个任务获得一个合适的 DirectShow 过滤器是非常困难的。可以假设客户端机器相当现代(快速 2 核 CPU)并且可以使用 CUDA/OpenCL。有一些应用程序允许使用 CUDA 对视频进行编码并提供良好的性能,但是我还没有找到合适的 DirectShow 过滤器或可用于开发的 API。 NVIDIA nvcuvenc.dll 似乎有私有(private) API,所以我无法直接使用它。我发现的任何基于 CPU 的编码器对于我的要求来说都太慢了,但也许我错过了一些。

任何人都可以向我推荐一个解决方案,即无论是使用 CPU/CUDA/OpenCL 还是 DirectCompute,都可以实现良好性能的编码器(付费或免费,可用于闭源应用程序)?或者也许我应该使用一些外部硬件视频编码器?

最好的祝福,

疯獾

最佳答案

由于您使用的是 Directshow,到目前为止,最简单的做法是在 ASF 容器中使用 WMV9。这更容易,因为它几乎可以在所有 Windows 机器上使用(很少有安装时间依赖性),速度相当快(在相当现代的机器上使用它应该没有问题)并且质量合理。但考虑到您的限制是 8 mbit/sec (1 MB/sec),质量对您来说不是问题。 2 mbit/sec,VGA 分辨率的 WMV9 应该看起来不错。

它不如一个体面的 H264 实现好,但从实现的角度来看,走这条路可以为自己节省很多时间。

看到这个:

http://msdn.microsoft.com/en-us/library/dd375008%28v=VS.85%29.aspx

关于encoding - DirectShow 中的实时视频编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3167032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com