我喜欢OBS-Studio的虚拟相机功能。
我试图理解它的工作原理,但无法正确理解。我只知道它是使用DirectShow构建的。项目包含OutputFilter、OutputPin、CaptureFilter和CapturePin
class OutputFilter : public IBaseFilter {
// ...
friend class OutputPin;
IFilterGraph *graph;
ComPtr<OutputPin> pin;
// ...
}
class OutputPin : public IPin, public IAMStreamConfig, public IKsPropertySet {
// ...
friend class OutputFilter;
// ...
}
class CaptureFilter : public IBaseFilter {
// ...
friend class CapturePin;
ComPtr<IFilterGraph> graph;
ComPtr<CapturePin> pin;
// ...
}
class CapturePin : public IPin, public IMemInputPin {
// ...
CaptureFilter *filter;
// ...
}当我们启用虚拟摄像机时,数据是如何通过这些过滤器和引脚移动的?
发布于 2021-07-13 08:33:05
他们使用的是shared memory server。基本上,他们有一个渲染过滤器,将传入的位图复制到共享内存中。然后他们有一个捕获过滤器,从共享内存中读取位图。你可以在这里看到他们的一些代码:win-dshow
https://stackoverflow.com/questions/65976105
复制相似问题