{"id":2206,"date":"2021-11-07T18:34:51","date_gmt":"2021-11-07T16:34:51","guid":{"rendered":"https:\/\/alax.info\/blog\/?p=2206"},"modified":"2022-06-06T21:16:36","modified_gmt":"2022-06-06T19:16:36","slug":"virtual-camera-api-in-windows-11-build-22000","status":"publish","type":"post","link":"https:\/\/alax.info\/blog\/2206","title":{"rendered":"Virtual Camera API in Windows 11 (Build 22000)"},"content":{"rendered":"\n<p>There is a new API coming with Windows 11. Finally we will get well defined way to register virtual cameras (perhaps for applications built against Windows Media Foundation API, not DirectShow): <a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/mfvirtualcamera\/nn-mfvirtualcamera-imfvirtualcamera\"><code>MFCreateVirtualCamera<\/code><\/a>.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Creates a virtual camera object which can be used by the caller to register, unregister, or remove the virtual camera from the system.<\/p><\/blockquote>\n\n\n\n<p>Frame server reference is a good sign and suggests that an application might be able to register its own implementation, then system wide service would act as a proxy and expose the implementation to video capture applciations built to work with cameras.<\/p>\n\n\n\n<p><code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/mfvirtualcamera\/ne-mfvirtualcamera-mfvirtualcameratype\">MFVirtualCameraType_SoftwareCameraSource<\/a><\/code> &#8220;The virtual camera is a software camera source.&#8221;<\/p>\n\n\n\n<p>There already is a sample on GitHub for this API: <a href=\"https:\/\/github.com\/microsoft\/Windows-Camera\/tree\/master\/Samples\/VirtualCamera\">Windows-Camera\/Samples\/VirtualCamera at master \u00b7 microsoft\/Windows-Camera (github.com)<\/a><\/p>\n\n\n\n<p>See also:<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-fooling-around wp-block-embed-fooling-around\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"1rZKMDozZ6\"><a href=\"https:\/\/alax.info\/blog\/2245\">Windows 11 Virtual Video Camera<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Windows 11 Virtual Video Camera&#8221; &#8212; Fooling Around\" src=\"https:\/\/alax.info\/blog\/2245\/embed#?secret=0t7c33FHOA#?secret=1rZKMDozZ6\" data-secret=\"1rZKMDozZ6\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<p>Some other interesting things are also coming, e.g. &#8220;virtual audio device that supports audio loopback based on a process ID instead of the device interface path of a physical audio device&#8221; (<code><a href=\"https:\/\/docs.microsoft.com\/en-us\/windows\/win32\/api\/audioclientactivationparams\/ne-audioclientactivationparams-audioclient_activation_type\">AUDIOCLIENT_ACTIVATION_TYPE_PROCESS_LOOPBACK<\/a><\/code> and friends). We will be able to re-capture individual process audio, whcih is a cool new one, but keep patience: new stuff is scheduled for Windows 10 Build 20348.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There is a new API coming with Windows 11. Finally we will get well defined way to register virtual cameras (perhaps for applications built against Windows Media Foundation API, not DirectShow): MFCreateVirtualCamera. Creates a virtual camera object which can be used by the caller to register, unregister, or remove the virtual camera from the system.&hellip; <\/p>\n<p><a class=\"moretag\" href=\"https:\/\/alax.info\/blog\/2206\">Read the full article<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[38,424,486,70],"class_list":["post-2206","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c","tag-media-foundation","tag-video","tag-winapi"],"_links":{"self":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/2206","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/comments?post=2206"}],"version-history":[{"count":0,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/posts\/2206\/revisions"}],"wp:attachment":[{"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/media?parent=2206"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/categories?post=2206"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alax.info\/blog\/wp-json\/wp\/v2\/tags?post=2206"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}