如何解决数据如何通过 Windows 上 OBS-Studio 虚拟相机中的引脚跨过滤器移动?
我喜欢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;
// ...
}
当我们启用虚拟相机时,数据如何在这些过滤器和引脚之间移动?
解决方法
他们正在使用 shared memory server。基本上,它们有一个渲染过滤器,可以将传入的位图复制到共享内存中。然后他们有一个捕获过滤器,可以从共享内存中读取位图。你可以在这里看到他们的一些代码:win-dshow
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。