webcamoid / akvirtualcamera Goto Github PK
View Code? Open in Web Editor NEWakvirtualcamera, virtual camera for Mac and Windows
License: GNU General Public License v3.0
akvirtualcamera, virtual camera for Mac and Windows
License: GNU General Public License v3.0
Hello I looked around and tried a few things.
if I run manually the command it works:
"C:\ffmpeg\bin\ffmpeg.exe" -loop 1 -framerate 1 -i temp.jpg -r 1 -pix_fmt rgb24 -f rawvideo - | "C:\Program Files\AkVirtualCamera\x64\AkVCamManager.exe" stream MyFakeCamera0 RGB24 640 480
In my c# app this is what I do:
cameraProcess= new Process();
ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
startInfo.FileName = "C:\\Program Files\\AkVirtualCamera\\x64\\AkVCamManager.exe";
startInfo.Arguments = "stream MyFakeCamera0 RGB24 640 480";
startInfo.RedirectStandardError = true;
startInfo.RedirectStandardInput = true;
startInfo.RedirectStandardOutput = true;
startInfo.UseShellExecute = false;
startInfo.CreateNoWindow = true;
cameraProcess.StartInfo = startInfo;
cameraProcess.Start();
And then to send my image to the camera:
Task.Factory.StartNew(async () =>
{
while(true)
{
try
{
MemoryStream outputStream = new MemoryStream();
await FFMpegArguments
.FromFileInput(Path.Combine(Environment.CurrentDirectory, "temp.jpg"))
.OutputToPipe(new StreamPipeSink(outputStream), options => options
.WithFrameOutputCount(1)
.WithFramerate(1)
.ForcePixelFormat("rgb24")
.ForceFormat("rawvideo"))
.ProcessAsynchronously();
var data = outputStream.ToArray();
cameraProcess.StandardInput.BaseStream.Write(data, 0, data.Length);
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
await Task.Delay(1000 / 30);
}
});
However I really dislike the idea of starting 33 process per second to stream an image.
Then I see my temp.jpg being shown as the virtual camera.
What would be the easiest way to get my bitmap as rgb24 format ( I have no clue how this format actually works ) and write it to the device. ( without using ffmpeg )
In order to be get the latest code of AkVirtualCamera as of yesterday to compile under Windows 10 with latest Visual Studio 16 2019 SDK, I had to apply the following small patch, because the available std::signbit()
has no variant which is defined on int64_t
. The long double
was the closest floating point type which looks acceptable, as no integral type like long long
was accepted. Please double check this, but I wanted to let you know that such a patch was needed to get AkVirtualCamery building under Windows 10...
--- VCamUtils/src/fraction.cpp
+++ VCamUtils/src/fraction.cpp
@@ -151,7 +151,7 @@ bool AkVCam::Fraction::isInfinity() const
int AkVCam::Fraction::sign() const
{
- return std::signbit(this->d->m_num) == std::signbit(this->d->m_den)? 1: -1;
+ return std::signbit((long double)this->d->m_num) == std::signbit((long double)this->d->m_den)? 1: -1;
}
bool AkVCam::Fraction::isFraction(const std::string &str)
AkVCamManager clients
reveals a list of clients supposedly utilizing the virtual camera. However, these clients do not list the virtual camera in their list of available cameras.
I install akvirtualcamera via the Webcamoid 9.0.0 settings ("The virtual camera is not installed, do you want to install it?"). This installs akvirtualcamera_windows 9.1.0. After completing and restarting Webcamoid 9.0.0 hangs forever.
Uninstalling akvirtualcamera_windows solves the issue. I have also manually tried akvirtualcamera_windows 9.0.0 with the same result (Webcamoid hanging).
Anything I can do to resolve the issue?
OS Name Microsoft Windows 10 Pro
Version 10.0.19044 Build 19044
System Name DELL-INSPIRON
System Model Inspiron 7548
System Type x64-based PC
Edit: Also have tested the daily build of Webcamoid, same issue. I use a non standard path without space for installation, P:\Tools\AkVirtualCamera
I'm evaluating AkVirtualCamera under Windows und from a functionality and performance perspective I'm impressed. AkVirtualCamera is exactly what I'm seeking for. Unfortunately, the stability under Windows is still problematic for me. Even with the latest snapshot as of yesterday, I'm regularily see the following scenarios:
If I feed frames into the devices via FFmpeg, then start a viewer like SplitCam or OBS Studio I can view the frames just fine. If I now stop the viewer side (just close SplitCam) or even just try to add another AkVirtualCameraDevice, the feeding(!) side gets interrupted as AkVCamManager stream
is no longer responsive. The AkVCamManager
process seems to be still running, but it no longer is able to send its streams to the camera devices via IPC, as a result no longer fetches data from stdin and as a consequence FFmpeg complains that its buffers are running full. On the attempt to add another camera, SplitCam and OBS Studio when trying to access the AkVirtualCamera devices regularly even crash!
Once such problems occurred, even a simple AkVCamManager devices
needs about 30-120 seconds to respond. After this time, subsequence command work just fine again, including AkVCamManager stream
. If I try to stop the device driver service with "sc stop AkVCamAssistant" it even needs 10-20 seconds until the process is really gone according to the Task Manager. Restarting it with "sc start AkVCamAssistant" then makes everything working just fine again, e.g. AkVCamManager devices
then responds again immediately.
From my perspective and observation, there is a problem in the IPC communication or especially in the responsiveness of the camera device driver service itself, because all AkVCamManager commands starve for some time. As it later works again and a restart of the service also helps, I guess some timeouts or buffer flushes or other hang scenarios happen inside device driver.
I've never had any issues using Snap Camera as a camera input. However, I've just figured out that every time I install AkVirtualCamera, every program including Webcamoid, Chrome, Discord, OBS, etc., Snap Camera stops being recognized as a Video Capture Device, and I have no option to select it as my input source. I have uninstalled and reinstalled Webcamoid, AkVirtualCamera, and Snap Camera. I have cleared my cache from Snap Camera, restarted my computer, and restarted all of the programs several times (making sure to open Snap Camera first).
All of the other applications that I've previously used Snap Camera as a camera source with no problem before now are not displaying it as a camera option.
Through process of elimination, I've realized that AkVirtualCamera is the reason Snap Camera stops being discoverable as a source. The second I install the AkVirtualCamera files onto my computer, even if the virtual camera itself isn't installed in Webcamoid, Snap Camera stops being recognized.
Please note that I am a total beginner with developing. My coding knowledge is extremely minimal, and even getting AkVCamera to work the first time was an overwhelmingly complex process for me. If you know of any possible fixes to run both AkVCamera and Snap Camera at the same time both as virtual cameras, I would be super appreciative! Any responses that are as explained as basic steps-by-step instructions would be the most helpful to me :') If possible, please try to explain any suggestions at as much of an elementary-level as possible, I would really appreciate it! Thank you in advance!
Once I install AkVirtualCamera as a virtual camera, Snap Camera stops functioning as an availably virtual camera input source in other programs.
I would expect to be able to use both Snap Camera and AkVirtualCamera as Virtual Camera output sources simultaneously.
If akvirtualcamera crashed, try to reproduce the crash several times to be sure where is the problem. Write the steps to reproduce the issue bellow:
make -C /Applications/akvirtualcamera/akvirtualcamera-build-directory
ln -s /Applications/AkVirtualCamera/AkVirtualCamera.plugin /Library/CoreMediaIO/Plug-Ins/DAL/AkVirtualCamera.plugin
cat << EOF > /Library/LaunchDaemons/org.webcamoid.cmio.AkVCam.Assistant.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>org.webcamoid.cmio.AkVCam.Assistant</string>
<key>ProgramArguments</key>
<array>
<string>/Applications/AkVirtualCamera/AkVirtualCamera.plugin/Contents/Resources/AkVCamAssistant</string>
<string>--timeout</string>
<string>300.0</string>
</array>
<key>MachServices</key>
<dict>
<key>org.webcamoid.cmio.AkVCam.Assistant</key>
<true/>
</dict>
<key>StandardOutPath</key>
<string>/tmp/AkVCamAssistant.log</string>
<key>StandardErrorPath</key>
<string>/tmp/AkVCamAssistant.log</string>
</dict>
</plist>
EOF
At this point, it appears that AkVirtualCamera has been installed, as it is available as a Webcamoid "Video Output" option. This is also the point that Snap Camera stops functioning as a "Video Input" option across every program on my computer.
Again, I am very new to this kind of development, and I'm sure I made multiple obvious errors. I would really appreciate patience and understanding as I'm still trying to learn. Thank you in advance for any help you can provide!
First off, this might be the same issue as webcamoid/webcamoid#231 but I'm not sure, as this is about another application using Webcamoid's virtual camera, not Webcamoid itself.
When creating a Webcamoid virtual camera on Windows 10, applications making use of Qt's camera capture code crash when trying to start that camera. Since Webcamoid itself is built using Qt, you should not have any issues using the default Qt multimedia webcam example to reproduce this issue.
I contacted Qt support because I suspected the issue is on their end, however they say the problem is in the filter provided by webcamoid as it crashes at
pVideoControl->GetFrameRateList(pPin, iIndex, size, &listSize, &frameRates);
running AkVcamManager.exe update
in non-elevated command prompt fails because of access issues
normal cmd: AkVcamManager.exe update
log file:
admin cmd: AkVcamManager.exe update
log file:
At LEAST tell me that it must be run as administrator (btw this is loglevel 7), but preferably make it auto run itself as administrator thus showing the admin prompt
If akvirtualcamera crashed, try to reproduce the crash several times to be sure where is the problem. Write the steps to reproduce the issue bellow:
AkVcamManager.exe
in cmdAkVcamManager.exe update
AkVcamManager.exe update
force the program to show administrator prompt when necessary
Commit hash: f2ca25c5c8f10df04dbbecefd73fce0e08c18f68
Build log URL: https://travis-ci.org/webcamoid/akvirtualcamera/builds/744660170
NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux
Wine Version: wine-5.21
Windows Version: Microsoft Windows 6.1.7601
Hi, I'm using mac (version 11.4) and trying to follow steps at https://github.com/webcamoid/akvirtualcamera/wiki/Build-and-install
launchctl enable system/ org.webcamoid.cmio.AkVCam.Assistant
the output is
Unrecognized target specifier. <service-target> takes a form of <domain-target>/<service-id>.
Please refer to `man launchctl` for explanation of the <domain-target> specifiers.
Please give me some hints to solve this issue. Thank you!
Is there any way I can uninstall it, or access the original camera?
I have macOS Catalina, macBook Pro mid-2012
Trying to build and install from source leads to an error
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:47,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareObject.h:169:2: error: expected unqualified-id before '^' token
169 | (^CMIOObjectPropertyListenerBlock)( UInt32 numberAddresses,
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareObject.h:169:2: error: expected ')' before '^' token
169 | (^CMIOObjectPropertyListenerBlock)( UInt32 numberAddresses,
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareObject.h:431:37: error: 'CMIOObjectPropertyListenerBlock' has not been declared
431 | CMIOObjectPropertyListenerBlock listener) API_AVAILABLE(macos(10.8));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareObject.h:452:41: error: 'CMIOObjectPropertyListenerBlock' has not been declared
452 | CMIOObjectPropertyListenerBlock listener) API_AVAILABLE(macos(10.8));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGContext.h:21,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBitmapContext.h:9,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.h:11,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVDisplayLink.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:25,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h:391:15: error: expected unqualified-id before '^' token
391 | typedef void (^CGPathApplyBlock)(const CGPathElement * element);
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h:391:15: error: expected ')' before '^' token
391 | typedef void (^CGPathApplyBlock)(const CGPathElement * element);
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPath.h:393:53: error: 'CGPathApplyBlock' has not been declared
393 | CG_EXTERN void CGPathApplyWithBlock(CGPathRef path, CGPathApplyBlock CF_NOESCAPE block)
| ^~~~~~~~~~~~~~~~
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDictionary.h:14,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFPage.h:15,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDocument.h:16,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGContext.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBitmapContext.h:9,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.h:11,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVDisplayLink.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:25,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFArray.h:103:15: error: expected unqualified-id before '^' token
103 | typedef bool (^CGPDFArrayApplierBlock)(size_t index,
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFArray.h:103:15: error: expected ')' before '^' token
103 | typedef bool (^CGPDFArrayApplierBlock)(size_t index,
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFArray.h:113:5: error: 'CGPDFArrayApplierBlock' has not been declared
113 | CGPDFArrayApplierBlock cg_nullable block, void * __nullable info)
| ^~~~~~~~~~~~~~~~~~~~~~
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFPage.h:15,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDocument.h:16,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGContext.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGBitmapContext.h:9,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CoreGraphics.h:11,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVDisplayLink.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:25,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDictionary.h:116:15: error: expected unqualified-id before '^' token
116 | typedef bool (^CGPDFDictionaryApplierBlock)(const char * key,
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDictionary.h:116:15: error: expected ')' before '^' token
116 | typedef bool (^CGPDFDictionaryApplierBlock)(const char * key,
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreGraphics.framework/Headers/CGPDFDictionary.h:126:5: error: 'CGPDFDictionaryApplierBlock' has not been declared
126 | CGPDFDictionaryApplierBlock cg_nullable block, void * __nullable info)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:25,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVDisplayLink.h:152:92: error: 'CVDisplayLinkOutputHandler' has not been declared
152 | CV_EXPORT CVReturn CVDisplayLinkSetOutputHandler( CVDisplayLinkRef CV_NONNULL displayLink, CVDisplayLinkOutputHandler CV_NONNULL handler );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreText.framework/Headers/CoreText.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:39,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVImageBuffer.h:28,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVPixelBuffer.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreText.framework/Headers/CTFontManager.h:379:34: error: expected ')' before '^' token
379 | bool (^ _Nullable registrationHandler)(CFArrayRef errors, bool done) ) CT_AVAILABLE(ios(13.0)) API_UNAVAILABLE(macos, watchos, tvos);
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreText.framework/Headers/CTFontManager.h:379:34: error: expected ')' before '^' token
379 | bool (^ _Nullable registrationHandler)(CFArrayRef errors, bool done) ) CT_AVAILABLE(ios(13.0)) API_UNAVAILABLE(macos, watchos, tvos);
| ^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreText.framework/Headers/CTFontManager.h:374:46: note: to match this '('
374 | void CTFontManagerRegisterFontsWithAssetNames(
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreText.framework/Headers/CTFontManager.h:379:34: error: expected initializer before '^' token
379 | bool (^ _Nullable registrationHandler)(CFArrayRef errors, bool done) ) CT_AVAILABLE(ios(13.0)) API_UNAVAILABLE(macos, watchos, tvos);
| ^
In file included from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ImageIO.framework/Headers/ImageIO.h:20,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ApplicationServices.framework/Headers/ApplicationServices.h:47,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVImageBuffer.h:28,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CVPixelBuffer.h:23,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreVideo.framework/Headers/CoreVideo.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMFormatDescription.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMedia.framework/Headers/CMSampleBuffer.h:56,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareStream.h:29,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwareDevice.h:26,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardware.h:49,
from /Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/CoreMediaIO.framework/Headers/CMIOHardwarePlugIn.h:36,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/utils.h:25,
from /Users/jm/Onedrive/projects/virtual_webcam_background/akvirtualcamera/cmio/PlatformUtils/src/preferences.cpp:23:
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ImageIO.framework/Headers/CGImageAnimation.h:42:15: error: expected unqualified-id before '^' token
42 | typedef void (^CGImageSourceAnimationBlock)(size_t index, CGImageRef image, bool* stop);
| ^
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ImageIO.framework/Headers/CGImageAnimation.h:42:15: error: expected ')' before '^' token
42 | typedef void (^CGImageSourceAnimationBlock)(size_t index, CGImageRef image, bool* stop);
| ~^
| )
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ImageIO.framework/Headers/CGImageAnimation.h:50:107: error: 'CGImageSourceAnimationBlock' has not been declared
50 | IMAGEIO_EXTERN OSStatus CGAnimateImageAtURLWithBlock(CFURLRef url, CFDictionaryRef _iio_Nullable options, CGImageSourceAnimationBlock block) IMAGEIO_AVAILABLE_STARTING(10.15, 13.0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/Applications/IDE/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX11.1.sdk/System/Library/Frameworks/ImageIO.framework/Headers/CGImageAnimation.h:58:108: error: 'CGImageSourceAnimationBlock' has not been declared
58 | IMAGEIO_EXTERN OSStatus CGAnimateImageDataWithBlock(CFDataRef data, CFDictionaryRef _iio_Nullable options, CGImageSourceAnimationBlock block) IMAGEIO_AVAILABLE_STARTING(10.15, 13.0);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [cmio/PlatformUtils/CMakeFiles/PlatformUtils.dir/src/preferences.cpp.o] Error 1
make[1]: *** [cmio/PlatformUtils/CMakeFiles/PlatformUtils.dir/all] Error 2
Follow steps on wiki
Hi, I installed the virtual camera service in the Mac version, and then tried to write a 2m pixel fwrite (buffer, buffer_size, 1, proc) each time, but it took about 200 milliseconds, causing the picture to get stuck. What's the reason,
Hello,
I am trying to use add-format. There seems to be some issue in the way I am
passing artguments. Can someone help?
$ ./AkVCamManager devices
+----------------------+--------------+
| Device | Description |
+----------------------+--------------+
| "AkVCamVideoDevice"0 | AvailCamera0 |
+----------------------+--------------+
$ AkVCamManager add-format AkVCamVideoDevice0 RGB24 640 480 30
'AkVCamVideoDevice0' doesn't exists.
$ AkVCamManager add-format "AkVCamVideoDevice"0 RGB24 640 480 30
'AkVCamVideoDevice0' doesn't exists.
$ AkVCamManager add-format AvailCamera0 RGB24 640 480 30
'AvailCamera0' doesn't exists.
$
As I understand, Pipewire is (going to be) the modern way to support this kind of thing on Linux, which seems nicer than a special kernel module.
I haven't looked enough into how akvirtualcamera or pipewire work to see what that would involved, but perhaps it could/should be supported here.
It looks like there is no "Webcamoid virtual camera service" when you just install the akvirtualcamera only. Is that correct?
Also can you please advise what the debug logs should be named in C:\Windows\Temp and C:\Users%USERNAME%\AppData\Local\Temp ?
Some considerations before doing anything:
Choose one of the templates bellow that fit better your issue.
Write here a brief description of the problem.
Describe the problem the best as you can, don't omit information.
How it should have work?
If akvirtualcamera crashed, try to reproduce the crash several times to be sure where is the problem. Write the steps to reproduce the issue bellow:
How would you solve the problem?
Describe your idea the best as you can, include sketches, mockups and diagrams if required.
Be patient, take in mind that there may be other priorities. Your idea will be accepted if fit in project goals.
Go ahead!
Some considerations before doing anything:
Choose one of the templates bellow that fit better your issue.
There are two problems
Write here a brief description of the problem.
For problem 1:
Describe the problem the best as you can, don't omit information.
AkCamAssistant did intalled,and followed the configuration guide.Chrome meet can find the virtual camera with the configuration,but zoom cannot.
For problem 2:
AkCamAssistant didn't intalled and followed the configuration setting to created some virtual cameras.
Only the virtual camera created after AkCamAssistant intalled can show by "AkVCamManager devices" command.The other virtual camera can't remove.
How it should have work?
If akvirtualcamera crashed, try to reproduce the crash several times to be sure where is the problem. Write the steps to reproduce the issue bellow:
How would you solve the problem?
Describe your idea the best as you can, include sketches, mockups and diagrams if required.
Be patient, take in mind that there may be other priorities. Your idea will be accepted if fit in project goals.
Go ahead!
Hi, I am piping in a stream from ffmpeg to AkVCamManager as follows:
.\ffmpeg.exe -rtsp_transport tcp -i rtsp://10.101.0.100:8554/live -f rawvideo - | .\AkVCamManager.exe stream AkVCamVideoDevice0 RGB24 640 480 30
This constantly uses memory until it runs out and throws the following error:
Program 'AkVCamManager.exe' failed to run: Exception of type 'System.OutOfMemoryException' was thrown.At line:1 char:83
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.
At line:1 char:1
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed
i build the source ver9.0 with cmake --build. there are three binfile.
i run akvcamassistant.exe -i,then akvcammanager.exe add device&add format&update.no virtual cemera display in the videocam soft.
i try to regsvr32 akvirtualcamera.exe,but none output result.
i try the daily installer,all is ok.
i want to known how could i make the exe,dll worked fine with out installer?thanks
Hello! Many thanks for the excellent library!
I have a question: is there a way to send frames from python to your virtual cam?
This project looks amazing and I would love to use it but there is one big issue. I seem to get loads of errors when using the example of streaming. I decided it may be my code so I made a new project and gave it a go, it still caused the same issue, is the example up to date? Am I missing something?
Hi! Let me know if I should recategorize this issue or post somewhere else instead.
https://github.com/webcamoid/akvirtualcamera/wiki
Seems to take you to the index of the repo. Presumably this is due to GitHub now charging for it?
Where can I find documentation?
QuickTime does not work with the webcam because it does not allow accessing xpc_connection_create_mach_service
.
Moving to NSXPCConnection
(sorry, I don't know the C++ equivalent) fixes the problem:
https://github.com/obsproject/obs-studio/blob/dde4d57d726ed6d9e244ffbac093d8ef54e29f44/plugins/mac-virtualcam/src/obs-plugin/OBSDALMachServer.mm
https://stackoverflow.com/questions/54188295/nsmachbootstrapserver-is-deprecated-how-can-nsxpcconnection-be-used-to-register
I have Cmake and Cmake tools installed in visual studio code but I'm having problems trying to link it up with my project so I can use this. I have already built akvirtualcamera but not sure how I'm supposed to then use it in my project. This is an amazing project as I have been looking for one that works for Windows and Mac and would love to know how to use it. I know this is a noob question, I have only recently started using C++.
Hi,
I have installed akvirtualcamera as part of webcmoid. Now I also want to use it as stand alone virtual camera for Windows.
Is it already available as a standalone package? If yes - I just cant find the the installation documentation (the Wiki just links back, and the webcamoid wiki gives no information on akvirtualcamera specifically).
I also can't find documentation of the command line arguments and usage.
From issue #3 I can see some installation and usage, but that is potentially much to less to use it to its full potential.
Any sourcce I'm missing and where I can read into?
Thanks, Costor
I success builded the latest akvirtualcamera in x64, and AkVcamAssistant is running well.
I try to create device in AkVcamManager as follow step:
I runned {AkVCamManager devices} can get this device, but not found in any client(such as zoom/skype)
I had tried to reboot windows, but gotted the same result.
Anyone can help me? Thanks!
I am piping from an rtsp stream to AkVCamManager as follows:
.\ffmpeg.exe -rtsp_transport tcp -i rtsp://10.101.0.100:8554/live -f rawvideo - | .\AkVCamManager.exe stream AkVCamVideoDevice0 RGB24 640 480 30
Everything appears to be running when doing this (until the System.Outofmemory error I have reported on another issue) however it never actually appears on the virtual camera.
When I test it with ffplay: .\ffplay.exe -rtbufsize 1000M -f dshow -i video="Inevidesk Virtual Camera" I just get a scrambled image - see capture below:
I am trying to output OBS to the akvirtualcam so I can have another virtual camera for obs. I am having trouble figuring out how to do ffmpeg -i video.webm -pix_fmt rgb24 -f rawvideo - | AkVCamManager stream AkVCamVideoDevice0 RGB24 480 360
in OBS ffmpeg output settings.
I am on MacOS Monterey and obs 27.1.3 and have downloaded the most recent version of akvirtualcamera.
Sorry if this is the wrong way/place to post this kind of question, please direct me to the proper place if so.
I can't find any devices under /dev/video
after successfully creating devices with AkVCamManager
Devices are created successfully, also they show in zoom but can't see them in vlc.
After creating the devices I was expecting to see /dev/video0
, /dev/video1
etc.
How it should have work?
After creating devices expecting to see them under /dev/video
or something like /dev/media
AkVCamManager
from the binary .pkg
file on the latest stable releaseconfig.ini
that creates 2 devices (output, capture)/dev/video*
for devices but nothingAkVCamManager devices
+--------------------+--------------------------------+
| Device | Description |
+--------------------+--------------------------------+
| AkVCamVideoDevice0 | Virtual Camera (output device) |
| AkVCamVideoDevice1 | Virtual Camera |
+--------------------+--------------------------------+
Am I missing something?
pinging @hipersayanX for visibility, thanks!
I have been using this code with the generate random noise on the Camera. It works but only when I look at it through cmd. If I go into a browser and try to see the cam it will show but as soon as I run this project, the camera view won't work at all, no matter what anymore. I have been using this website (https://webcamtests.com/) to test the camera as Zoom can't seem to see the camera, it added a "Virtual Camera" but it does nothing, it just shows feed from another camera and the camera doesn't even have that name anyway.
Here is the dump:
https://justpaste.it/21w5d
Here is the code:
https://justpaste.it/28hdo
I followed these steps but could not find that device created.
https://github.com/webcamoid/akvirtualcamera/wiki/Configure-the-cameras
Hello,
I would like to apologize to contacting you like this but could not find any mail anywhere.
We are small team who is developing software for Controlling Online Exams. Program consist of two main parts - Capture and Analyze. Capture program is installed on client pc and it is in focus her.
We did all coding in c++ on Windows platform with QT UI. Our problem is MAC support, as we donβt have much experience with it. So my question would you be interested to make this transition for us. Of course we would be with you whole way just need some expert guidance.
If you are interested please tell me mail on which I can send you more details. So you can examine and tell your price, and we can agree on everything before continuing.
If not I am very sorry for bothering you in this way..
Best regards,
Josip
When webcamoid is not running, apparently AkVCamAssistant.exe is, and is crashing multiple times a day.
Clicking a random one gives this:
After some point, they all changed slightly, which I suspect is a change in windows but I'm not quite sure (after a search it seems the bucket id is Microsoft's way of tracking the errors from this specific program):
Is it technically feasible to expand akvirtualcamera to IOS and Android?
Hi, I build the AkVirtualCamera from source. I followed the wiki step by step. I added device, started the service, added format to the camera. Now, my camera is detected by zoom.us. I can use set-picture command to set default png etc. However, there is a problem with the ipcbridge that doesnt let me stream using ffmpeg.
I can't make stream using ffmpeg. I set log level 7 to gain more information. Here is a sample of my output even in the simplest command:
./AkVirtualCamManager devices
177 debug: bool AkVirtualCamera::IpcBridge::registerPeer(bool)
189 debug: Requesting service.
199 debug: Setting event handler.
208 debug: Requesting port.
285 debug: FAILED
and device information normally
I expect program to work properly.
On Windows: Skype shows error message "No device found". Does not recognize the virtual camera
Skype version 8.83.0.408 (Skype for desktop, on Windows OS) do not find the created virtual camera. The virtual camera is shown by Google Meet and Zoom without any issue.
It should show the created virtual camera given that its support status is green
AkVCamManager.exe add-device "Virtual Camera"
AkVCamManager.exe add-format AkVCamVideoDevice0 RGB24 640 480 30
AkVCamManager.exe update
Possible bug on latest Skype for Desktop
I set two formats: 720p and 480p for my virtual camera. I want to edit source code to forbid getting stream from the same camera when we are already streaming in other format like my real web come does.
I'm not sure if this is possible with DShow. If you think is it possible, could you please suggest class or method to add mutex/if?
Hello,
Is it possible to make the android emulator see the akvirtualcamera virtual camera?
When I execute 'emulator.exe -webcam-list', akvirtualcamera is not showing up.
Thanks.
Is the Manager folder the sample application? What do you have in mind for it? Would you mind if I try to implement something?
Also, it would be good to have CMake support too, Qt itself is switching to cmake and it will be used to build Qt6.
I've opened this issue to report some ideas and thoughts that come to my mind while working in the virtual camera.
Right now I'm working in the vcam for Mac, I'll use this driver ref1 for experimenting all new features for the virtual camera, and then port the changes to the Windows and Linux drivers.
My biggest problem right now is finding a common interface for communicating with the virtual camera, an interface that does not requires linking to any library or header, an interface that allow me to modify the driver internally as much as I want without breaking compatibility with controlling programs, at least not breaking too much.
My first thought was using DirectShow and CoreMediaIO for communicating with the driver and send data to it, while CMIO in theory has the capability of receiving data through CMIOHardwareStream interface, not even AVFoundation seems to make use of that capability.
While working on integrating the driver to Webcamoid I've discovered the even when marking the stream as an input, AVFoundation still list the virtual input device (the device that will receive the frames) as a capture device (the device that will be seen by the target program). The protocol does not seems to be fully implemented by Apple.
Thinking over and over, I come to the conclusion that the best solution for sending frames to the vcam would be setting the stream parameters and telling where I want to send the frames, and then piping the raw frames, doing something like this:
dd if=/dev/urandom bs=921600 count=30 2>/dev/null | AkVCamManager stream /akvcam/video0 RGB24 640 480
That's all for now, the re-design is taking some time but the final result will be a big improvement compared to the old driver π
I'm currently experimenting with your AkVirtualCamera under Windows 10 and have to say it looks like a very promising solution. But I'm facing performance issues and I'm not sure whether I should expect them or not. Let me describe my setup:
I've compiled all parts from source as of today (2021-05-30) and setup the devices with the following INI-file.
[Cameras]
cameras/size = 2
cameras/1/description = Ak Virtual Camera 1
cameras/1/formats = 1, 2, 3, 4
cameras/2/description = Ak Virtual Camera 2
cameras/2/formats = 1, 2, 3, 4
[Formats]
formats/size = 4
formats/1/format = RGB24, YUY2
formats/1/width = 480
formats/1/height = 360
formats/1/fps = 6, 12, 24, 30, 48, 60
formats/2/format = RGB24, YUY2
formats/2/width = 640
formats/2/height = 480
formats/2/fps = 6, 12, 24, 30, 48, 60
formats/3/format = RGB24, YUY2
formats/3/width = 1280
formats/3/height = 720
formats/3/fps = 6, 12, 24, 30, 48, 60
formats/4/format = RGB24, YUY2
formats/4/width = 1920
formats/4/height = 1080
formats/4/fps = 6, 12, 24, 30, 48, 60
Now just copying the frames from a Logitech BRIO 4K (in 720p30 mode) to AkVCamVideoDevice0 with the following command works as expected:
./ffmpeg.exe \
-f dshow -rtbufsize 200M -s 1280x720 -r 30 -i video="BRIO 4K Stream Edition" \
-f rawvideo -map 0:v -pix_fmt rgb24 -s 1280x720 - | \
./AkVCamManager.exe stream AkVCamVideoDevice0 \
RGB24 1280 720
FFmpeg reports that it is able to drive 30fps and I see no real delay in the resulting video device's output. Great! But when I try to shuffle frames in a 1080p30 mode with the following command, FFmpeg is only able to achieve just 25 fps on average and after a few seconds (as expected as the input still comes with 30 fps) the FFmpeg "rtbufsize" is full and FFmpeg complains and the virtual camera device's output shows more and more delay:
./ffmpeg.exe \
-f dshow -rtbufsize 200M -s 1920x1080 -r 30 -i video="BRIO 4K Stream Edition" \
-f rawvideo -map 0:v -pix_fmt rgb24 -s 1920x1080 - | \
./AkVCamManager.exe stream AkVCamVideoDevice0 \
RGB24 1920 1080
This is on an average gaming PC where OBS Studio and ManyCam and other video tools are running regularily and are able to shuffle around 1080p30 without problems. So, either FFmpeg here is the bottleneck or perhaps AkVCamManager stream
itself. Do you have any ideas what can cause such a low overall performance? Do you have any ideas how I speed up the processing?
PS: The output of AkVCamManager.exe supported-formats -i
shows just "RGB24" but I've nevertheless tried to feed YUY2 from FFmpeg to AkVCamManager. This way FFmpeg needed no conversion was able to process faster, but the result is that the resulting video works in tools like SplitCam but not in Microsoft Teams. I guess feeding YUY2 is actually not intended, even it looks it partly works?
When I use:
ffmpeg -i "vv.mp4" -pix_fmt rgb24 -f rawvideo - | AkVCamManager.exe stream --fps 30 AkVCamVideoDevice1 RGB24 640 360
the speed is more fast that the original.
How to fix it?
I use the viki's Build and install to install virtual camera.But I can't find the camera in zoom.us.
Following my terminal code:
soda@sodadeiMac Resources % ./AkVCamManager devices
soda@sodadeiMac Resources % ./AkVCamManager load setting.ini
soda@sodadeiMac Resources % ./AkVCamManager devices
+--------------------+-------------------------+
| Device | Description |
+--------------------+-------------------------+
| AkVCamVideoDevice0 | My Other Virtual Camera |
| MyFakeCamera0 | My Virtual Camera |
+--------------------+-------------------------+
soda@sodadeiMac Resources % ./AkVCamManager update
soda@sodadeiMac Resources % ./AkVCamManager formats MyFakeCamera0
0: YUY2 1280x720 30/1 FPS
and the setting.ini:
[Cameras]
cameras/size = 2
cameras/1/description = My Virtual Camera
cameras/1/formats = 1
cameras/1/id = MyFakeCamera0
cameras/2/description = My Other Virtual Camera
cameras/2/formats = 1, 2
[Formats]
formats/size = 2
formats/1/format = YUY2
formats/1/width = 1280
formats/1/height = 720
formats/1/fps = 30
formats/2/format = RGB24
formats/2/width = 1280
formats/2/height = 720
formats/2/fps = 30
[General]
default_frame = /Users/soda/xcodepoject/akvirtualcamera-master/cmake_build/build/AkVirtualCamera.plugin/Contents/Resources/default.jpg
Is there anything I missed?
Hello,
I created a device as shown below.
Thanks
$ AkVCamManager add-device "AvailCamera0"
Device created as "AkVCamVideoDevice"0
$ AkVCamManager devices
+----------------------+--------------+
| Device | Description |
+----------------------+--------------+
| "AkVCamVideoDevice"0 | AvailCamera0 |
+----------------------+--------------+
Hi! Is there any way to send frames to virtual camera without pipe?
Hello,
I want to pass OpenCV to a virtual webcamera. Is there a simple example to demonstrate how
it can be done using this software?
Thanks
I would like to create a Windows application which (with the help of the following batch script AkVCamAssistant.bat
and INI file AkVCamAssistant.ini
) initially allows the creation of 3 virtual camera devices and later allows to destroy them again:
@echo off
cd /d "%~dp0"
net session >nul 2>&1
if %ERRORLEVEL% GEQ 1 (
echo ERROR: Administrative rights are required, please re-run this script as Administrator
goto end
)
set command=%1
if "%command%" == "install" (
sc query AkVCamAssistant >nul 2>&1
if not errorlevel 1 (
echo virtual camera driver already installed
goto end
)
echo installing virtual camera driver
AkVCamAssistant.exe --install
timeout /t 2 /nobreak >nul 2>&1
sc start AkVCamAssistant >nul 2>&1
timeout /t 2 /nobreak >nul 2>&1
AkVCamManager.exe load AkVCamAssistant.ini
AkVCamManager.exe set-picture "%~dp0\camera-placeholder.bmp"
AkVCamManager.exe update
goto end
)
if "%command%" == "uninstall" (
sc query AkVCamAssistant >nul 2>&1
if errorlevel 1 (
echo virtual camera driver not installed
goto end
)
echo uninstalling virtual camera driver
AkVCamManager.exe remove-devices
AkVCamManager.exe update
sc stop AkVCamAssistant >nul 2>&1
timeout /t 2 /nobreak >nul 2>&1
AkVCamAssistant.exe --uninstall
timeout /t 2 /nobreak >nul 2>&1
sc stop AkVCamAssistant >nul 2>&1
goto end
)
echo USAGE: AkVCamAssistant.bat install
echo USAGE: AkVCamAssistant.bat uninstall
:end
[Cameras]
cameras/size = 3
cameras/1/description = Ak Virtual Camera 1
cameras/1/formats = 1, 2, 3, 4
cameras/2/description = Ak Virtual Camera 2
cameras/2/formats = 1, 2, 3, 4
cameras/3/description = Ak Virtual Camera 3
cameras/3/formats = 1, 2, 3, 4
[Formats]
formats/size = 4
formats/1/format = RGB24, YUY2
formats/1/width = 480
formats/1/height = 360
formats/1/fps = 6, 12, 24, 30, 48, 60
formats/2/format = RGB24, YUY2
formats/2/width = 640
formats/2/height = 480
formats/2/fps = 6, 12, 24, 30, 48, 60
formats/3/format = RGB24, YUY2
formats/3/width = 1280
formats/3/height = 720
formats/3/fps = 6, 12, 24, 30, 48, 60
formats/4/format = RGB24, YUY2
formats/4/width = 1920
formats/4/height = 1080
formats/4/fps = 6, 12, 24, 30, 48, 60
Unfortunately, when running AkVCamAssistant.bat install
I always get the three devices, but a AkVCamManager.exe devices
shows that the naming of the devices seems to be non-deterministic. Sometimes I get 0/1/2, sometimes 1/2/5, sometimes 1/2/3, etc. In my last attempt I received:
$ ./AkVCamManager.exe devices
+--------------------+---------------------+
| Device | Description |
+--------------------+---------------------+
| AkVCamVideoDevice1 | Ak Virtual Camera 1 |
| AkVCamVideoDevice2 | Ak Virtual Camera 2 |
| AkVCamVideoDevice3 | Ak Virtual Camera 3 |
+--------------------+---------------------+
This would be harmless if the other AkVCamManger.exe
commands would not expect the device name and instead could also accept the device description (the logical name). As a result, my application first would have to map from the fixed device description to the assigned device names. Especially the AkVCamManager stream
command expects the underlying particular assigned device name.
My questions are now:
AkVCamManager
commands to alternatively also accept the device description and automatically map to the device name? Perhaps if an extra option like -d
(for "description") or -m
for (for "mapping") is specified, the DEVICE argument is treated as a DESCRIPTION and automatically mapped?OS: Windows 11 Professional
AkVCam version: 9.1.0
I used the 64 bit version of AkVCamManager/Assistant.
I had created some test devices and then removed them and removed the service.
AkVCamManager remove-devices
AkVCamManager hack set-service-down
After issuing remove-devices I ran
AkVCamManager devices
And AkVCamManager returned empty, so I then removed the service and rebooted.
However, Chrome, Edge, and Firefox still see the test devices. While AkVCamManager and Windows settings continue to report there are no devices. If I plug in real webcam Chrome, Edge, and Firefox will detect it and list it, but it will be removed from the list as soon as I unplug it as I would expect.
Below are some screenshots just to visually confirm what I wrote.
P.S. If anyone knows how I can remove these erroneous devices manually, please let me know.
Screenshot Edge website permissions page.
After installing the latest AkVirtualCamera .pkg
on my M1 Mac and following the configuration guide, I am unable to see the virtual camera in any client applications.
In the browser, I use https://webcamtests.com/ to enumerate available cameras. I only see my existing cameras here, I don't see the new virtual camera. I have tested this in the latest Chrome and Firefox. I don't see the new virtual camera in Zoom either.
I should see some virtual camera listing appear here, at least with the default "no signal" dots pattern.
.pkg
$ alias AkVCamManager=/Applications/AkVirtualCamera/AkVirtualCamera.plugin/Contents/Resources/AkVCamManager
$ AkVCamManager add-device "AkVirtualCamera"
Device created as AkVCamVideoDevice0
$ AkVCamManager add-format AkVCamVideoDevice0 YUY2 640 480 30
$ AkVCamManager update
π€·ββοΈ
I have other virtual camera applications installed such as OBS Virtual Camera, I'm not sure if that would cause some conflict.
AkVCamManager dump
<?xml version="1.0" encoding="UTF-8" ?>
<info>
<devices>
<device>
<id>AkVCamVideoDevice0</id>
<description>AkVirtualCamera</description>
<formats>
<format>
<pixel-format>YUY2</pixel-format>
<width>640</width>
<height>480</height>
<fps>30/1</fps>
</format>
<format>
<pixel-format>RGB32</pixel-format>
<width>640</width>
<height>480</height>
<fps>30/1</fps>
</format>
<format>
<pixel-format>RGB24</pixel-format>
<width>640</width>
<height>480</height>
<fps>30/1</fps>
</format>
</formats>
<controls>
<control>
<id>hflip</id>
<description>Horizontal Mirror</description>
<type>Boolean</type>
<minimum>0</minimum>
<maximum>1</maximum>
<step>1</step>
<default-value>0</default-value>
<value>0</value>
</control>
<control>
<id>vflip</id>
<description>Vertical Mirror</description>
<type>Boolean</type>
<minimum>0</minimum>
<maximum>1</maximum>
<step>1</step>
<default-value>0</default-value>
<value>0</value>
</control>
<control>
<id>scaling</id>
<description>Scaling</description>
<type>Menu</type>
<minimum>0</minimum>
<maximum>1</maximum>
<step>1</step>
<default-value>0</default-value>
<value>0</value>
<menu>
<item>Fast</item>
<item>Linear</item>
</menu>
</control>
<control>
<id>aspect_ratio</id>
<description>Aspect Ratio</description>
<type>Menu</type>
<minimum>0</minimum>
<maximum>2</maximum>
<step>1</step>
<default-value>0</default-value>
<value>0</value>
<menu>
<item>Ignore</item>
<item>Keep</item>
<item>Expanding</item>
</menu>
</control>
<control>
<id>swap_rgb</id>
<description>Swap RGB</description>
<type>Boolean</type>
<minimum>0</minimum>
<maximum>1</maximum>
<step>1</step>
<default-value>0</default-value>
<value>0</value>
</control>
</controls>
</device>
</devices>
<input-formats>
<pixel-format>RGB24</pixel-format>
</input-formats>
<default-input-format>RGB24</default-input-format>
<output-formats>
<pixel-format>RGB32</pixel-format>
<pixel-format>RGB24</pixel-format>
<pixel-format>UYVY</pixel-format>
<pixel-format>YUY2</pixel-format>
</output-formats>
<default-output-format>YUY2</default-output-format>
<clients>
</clients>
<picture></picture>
<loglevel>-1</loglevel>
</info>
sudo launchctl list
includes an entry for org.webcamoid.cmio.AkVCam.Assistant
RGB24
per the suggestion in #36AkVCamManager set-picture
AkVCamManager clients
while enumerating media devices in the browser, I don't see anything in the outputJust installed binary for macOS and followed the steps in the build wiki to for lauchctl
in order to launch the service
In my process on one minute I see the AkVCAMAssistant and the other it's gone.
Plus when I try the command AkVCamManager
on the command line it's not found
Shouldn't all command line commands be automatically recogniised after installation?
Plus, this should be working as stand-alone without webcamoid right?
sudo launchctl enable system/org.webcamoid.cmio.AkVCam.Assistant
sudo launchctl bootstrap system /Library/LaunchDaemons/org.webcamoid.cmio.AkVCam.Assistant.plist
AkVCamManager
in CLI, not found return errorI think the real issue is with step 2 since executing it and double checking the running processes doesn't show up AkVCam.Assistant. Any ideas what's going on here?
Also, every time step 3 is executed I get the following message:
sudo launchctl bootstrap system /Library/LaunchDaemons/org.webcamoid.cmio.AkVCam.Assistant.plist
/Library/LaunchDaemons/org.webcamoid.cmio.AkVCam.Assistant.plist: service already bootstrapped
Bootstrap failed: 37: Operation already in progress
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.