Closed hipersayanX closed 3 years ago
Video streaming is working fine and is possible to send frames from third party programs. Here is an example using FFmpeg:
The command used is:
#!/bin/sh
export PATH=/Applications/AkVirtualCamera/AkVirtualCamera.plugin/Contents/Resources:${PATH}
ffmpeg -i ~/Movies/popipo.mp4 -pix_fmt rgb24 -f rawvideo - | pv -L 12M | AkVCamManager stream /akvcam/video0 RGB24 480 360
The current road map is more or less like this:
Hi I would like to use virtual cammera in commercial application for Windows 10. It should take the stream from WebRTC server and feed it to virtual cammera, so the video is available in Skype application. Is this somehow possible with this application ? I tried to compile with Qt 5.13.2 and MinGW32 but it fails with many errors mostly in ipcbridge.cpp Best, Marek
@frankipl
I would like to use virtual cammera in commercial application for Windows 10.
AkVirtualCamera is licensed as GPLv3, it can only be used in other GPLv3 apps or later.
It should take the stream from WebRTC server and feed it to virtual cammera, so the video is available in Skype application. Is this somehow possible with this application ?
With newer versions of Skype this is not possible you need an AVStream driver for that, this works as a DirectShow plugin, it won't be detected.
I tried to compile with Qt 5.13.2 and MinGW32 but it fails with many errors mostly in ipcbridge.cpp
I'm changing the internal API, it won't compile in Windows for now.
Hi If I still have my client interrested would you consider doing AVStream driver and virtual camera as commercial solution for my project ? Best, Marek
@frankipl
Ok, I've thinking all day about that. Your are interested on using my virtual camera driver on your commercial software, I'm interested on keeping it Free Open Source Software for everyone and preserving my copyright ownership on it. Let's do this:
Same for AkVirtualCamera, same for akvcam. I don't care who pay for it. I haven't thought about the price but it will be proportional to the development time since beginning.
Hi
Both of your variants are fine for me. I'm waiting for a client to decide, maybe he will find someone else for a whole app, this should take about a week. I will let you know in either case.
Best Marek
What is the equivalent command on Windows? I compiled akvirtualcamera on windows, the problem is I can't stream to virtual camera using FFmpeg on Windows: I have tried:
./ffmpeg.exe -i c:/1.mkv -f rawvideo -pix_fmt rgb24 -s 640x480 - | ./AkVCamManager.exe stream C:/msys64/akvcam/video1 RGB24 640 480
But it gives me conversion error:
Output #0, rawvideo, to 'pipe:': Metadata: encoder : Lavf58.45.100 Stream #0:0: Video: rawvideo (RGB[24] / 0x18424752), rgb24, 640x480, q=2-31, 7372800 kb/s, 1k fps, 1k tbn, 1k tbc >(default) Metadata: DURATION : 00:00:42.105000000 encoder : Lavc58.91.100 rawvideo av_interleaved_write_frame(): Invalid argument Error writing trailer of pipe:: Invalid argument frame= 1 fps=0.0 q=-0.0 Lsize= 900kB time=00:00:00.00 bitrate=7372800.0kbits/s speed=0.0185x video:900kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000000% Conversion failed!
@nejatafshar This part is ok:
./ffmpeg.exe -i c:/1.mkv -f rawvideo -pix_fmt rgb24 -s 640x480 -
This part:
./AkVCamManager.exe stream C:/msys64/akvcam/video1 RGB24 640 480
should be:
./AkVCamManager.exe stream AkVCamVideoDevice0 RGB24 640 480
AkVCamVideoDevice0 must be one of the paths returned by AkVCamManager devices
, also this is not necessarily a real path in your file system, it's just fake string that some programs needs for loading the camera.
Also, try with one of the latest commits, I've changed the prefix to AkVCamVideoDevice so it does not conflicts with MSYS2.
I built the latest commit, created a virtual camera (it's named AkVCamVideoDevice0 now) and used the command you suggested. Still the same error. Although running command in Windows Power Shell does not give this error and proceeds converting frames but I am not able to see video in virtual web cam. Any idea what is the problem?
@nejatafshar Once you added the device and the format you must run AkVCamManager update
in an administrator CMD in both x86 an x64, that could be the problem.
Also, you must install the assistant, otherwise you won't be able to communicate with the clients.
Anyway, I did not tested it enough, I must still integrate the new plugin to Webcamoid, document it, and most probably will change the build system to CMake, so there are a lot of work to do yet.
Edit
I'll also need to figure out how I will integrate the AVStream driver with the DirectShow plugin, will see how far I can go with it :thinking:
I'm getting the same error, even with AkVCamVideoDevice0
. The picture shows up just fine and all, but ffmpeg doesn't seem to want to stream to it. Also, don't replace |
with >
like I did because that just overwrites AkVCamManager.exe
(I just installed it again to another directory, copied it back over, then deleted that directory to fix)
Here's a line worth noting: "Invalid pixel format"
My command is:
ffmpeg -i D:\Documents\webcamoid_virtcam\unable_to_locate_the_funny.mp4 -f rawvideo -vcodec rawvideo -s 1280x720 -pix_fmt rgb24 -r 30 -an - | AkVCamManager.exe stream AkVCamVideoDevice0 rgb24 1280 720
And my virt cam device is:
EEEEEDDDDDIIIIITTTTTT
after capitalizing the RGB24 in the AkVCamManager.exe portion, it had a different error
@ayunami2000 check if you have the AkVCamAssistant
service running.
Wait so if the service isn't running, will the preview still work? Because that was still working but I'm not sure about the assistant part
On Sun, Nov 22, 2020 at 6:12 PM hipersayanX notifications@github.com wrote:
@ayunami2000 https://github.com/ayunami2000 check if you have the AkVCamAssistant service running https://www.thewindowsclub.com/open-windows-services.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/webcamoid/akvirtualcamera/issues/3#issuecomment-731863300, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF5DB4FZG2L2D5HZ4IZ5VP3SRGLEJANCNFSM4QBBQH7Q .
Wait so if the service isn't running, will the preview still work? Because that was still working but I'm not sure about the assistant part
The virtual camera will work without the service, but it won't be able to communicate with the producer client. Is like using a web page without connecting to a internet server.
Oh well that might be the issue, when I get a chance I'll see if that fixes it!
On Sun, Nov 22, 2020 at 6:17 PM hipersayanX notifications@github.com wrote:
Wait so if the service isn't running, will the preview still work? Because that was still working but I'm not sure about the assistant part
The virtual camera will work without the service, but it won't be able to communicate with the producer client.
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/webcamoid/akvirtualcamera/issues/3#issuecomment-731864053, or unsubscribe https://github.com/notifications/unsubscribe-auth/AF5DB4ENH6LXLNQYASAAN2DSRGL2LANCNFSM4QBBQH7Q .
@ayunami2000 if the service is not installed, from an administrator CMD run:
AkVCamAssistant --install
The service seems to have broken camera usage in both chrome and firefox. Firefox just crashes while chrome just doesn't load cameras. At least zoom can still use my default camera. Also, webcamoid is no longer launching at all.... I tried restarting as well.
hold on now these are here lol
bruh
edit:
@ayunami2000
The service seems to have broken camera usage in both chrome and firefox. Firefox just crashes while chrome just doesn't load cameras. At least zoom can still use my default camera. Also, webcamoid is no longer launching at all.... I tried restarting as well.
Have you solved this problem?
I'm busy working in akvcam, but I'll try to fix that bugs once I finish with it.
Right now, the issue that I am experiencing is that AkVCamManager seems to hang, but only sometimes, but this impedes my ability to use it with webcamoid because it always hangs for some unknown reason.
this screenshot contains "terminate called without an active exception"
sometimes it says that^^ but other times it will just hang and after ~15-20 seconds time out. While it's hanging webcamoid does not respond, and once it times out these happen:
bruh
edit:
AkVCamManager only has these issues when AkVCamAssistant is installed. (AkVCamAssistant.exe -i
) Webcamoid does not launch while AkVCamManager is hanging, so the only way I was able to actually get to these screens was by 1) installing AkVCamAssistant, 2) updating AkVCamManager (might be optional), 3) launching Webcamoid, 4) uninstalling AkVCamAssistant, 5) updating AkVCamManager (might be optional), 6) (webcamoid will now open itself AND list devices in the video sources), 7) install AkVCamAssistant in an attempt to get webcamoid to work, 8) update AkVCamManager (it sometimes hangs here), 9) try to select or create a source for webcamoid to output to (it always hangs here at some point in the process). 10) fails
Here's a screenshot of step 9:
(waiting ~15-30 seconds between steps)
Here's step 10:
I've had to use task manager to kill the hanging AkVCamManager's
note: sometimes AkVCamAssistant also hangs, specifically when I am uninstalling it. If I just ctrl+c out and run it again then it seems to succeed in uninstalling the 2nd time
Here's my entire console through those steps where you can see some of the pieces described above:
First I install AkVCamAssistant and update AkVCamManager:
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -i
[2020-11-25 14:15:56.107, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:15:56.108, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:15:56.122, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:15:56.122, 1, src/preferences.cpp (574)] debug: Value: logfile
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
[2020-11-25 14:16:00.194, 1, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:16:00.195, 1, src/messageserver.cpp (134)] info: Starting mode send
[2020-11-25 14:16:00.197, 1, src/ipcbridge.cpp (140)] debug: [2020-11-25 14:16:00.197, 2, src/messageserver.cpp (361)] info: Pipe Available: \\.\pipe\AkVCamAssistant
bool AkVCam::IpcBridge::registerPeer()
[2020-11-25 14:16:00.198, 2, src/ipcbridge.cpp (835)] debug: static void AkVCam::IpcBridgePrivate::pipeStateChanged(void*, AkVCam::MessageServer::PipeState)
[2020-11-25 14:16:00.199, 1, src/ipcbridge.cpp (155)] info: Recommended port name: AkVCam_Client0
[2020-11-25 14:16:00.199, 2, src/ipcbridge.cpp (840)] info: Server Available
[2020-11-25 14:16:00.200, 1, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:16:00.200, 2, src/ipcbridge.cpp (140)] debug: bool AkVCam::IpcBridge::registerPeer()
[2020-11-25 14:16:00.201, 1, src/messageserver.cpp (129)] info: Starting mode receive
[2020-11-25 14:16:00.202, 2, src/ipcbridge.cpp (155)] info: Recommended port name: AkVCam_Client1
[2020-11-25 14:16:00.203, 2, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:16:00.203, 1, src/ipcbridge.cpp (174)] info: Registering port name: AkVCam_Client0
[2020-11-25 14:16:00.203, 2, src/messageserver.cpp (129)] info: Starting mode receive
[2020-11-25 14:16:00.204, 1, src/ipcbridge.cpp (192)] info: Peer registered as terminate called without an active exception
AkVCam_Client0
[2020-11-25 14:16:00.214, 1, src/ipcbridge.cpp (549)] debug: void AkVCam::IpcBridge::updateDevices()
[2020-11-25 14:16:00.216, 1, src/utils.cpp (59)] debug: std::string AkVCam::locatePluginPath()
[2020-11-25 14:16:00.218, 1, src/ipcbridge.cpp (551)] debug: Plugin path: D:\AkVirtualCamera.plugin\x64
[2020-11-25 14:16:00.221, 1, src/ipcbridge.cpp (557)] debug: Plugin binary: D:\AkVirtualCamera.plugin\x64\AkVirtualCamera.dll
[2020-11-25 14:16:00.223, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:16:00.223, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:16:00.224, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:16:00.224, 1, src/preferences.cpp (574)] debug: Value: logfile
[2020-11-25 14:16:00.225, 1, src/plugininterface.cpp (362)] info: Sending debug output to C:\Users\spwil\AppData\Local\Temp\\AkVirtualCamera.log
[2020-11-25 14:16:00.239, 1, src/ipcbridge.cpp (199)] debug: void AkVCam::IpcBridge::unregisterPeer()
here, I launch webcamoid and it hangs, so I uninstall the service:
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -u
[2020-11-25 14:16:17.716, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:16:17.718, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:16:17.718, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:16:17.719, 1, src/preferences.cpp (574)] debug: Value: logfile
this is where I was going to AkVCamManager.exe update
but webcamoid opened itself anyways so I guess it updated on its' own
also I just realized that this also has this line:
[2020-11-25 14:16:00.204, 1, src/ipcbridge.cpp (192)] info: Peer registered as terminate called without an active exception
AkVCam_Client0
clearly terminate called without active exception[newline]
was thrown into the logging
aaaanyways, now that webcamoid is open and listing output devices (If I don't do this then nothing will happen if I try adding sources because no service is running):
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -i
[2020-11-25 14:17:48.603, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:17:48.605, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:17:48.607, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:17:48.608, 1, src/preferences.cpp (574)] debug: Value: logfile
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
[2020-11-25 14:17:50.231, 1, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:17:50.231, 1, src/messageserver.cpp (134)] info: Starting mode send
[2020-11-25 14:17:50.234, 1, src/ipcbridge.cpp (140)] debug: bool AkVCam::IpcBridge::registerPeer()
[2020-11-25 14:17:50.235, 2, src/messageserver.cpp (361)] info: [2020-11-25 14:17:50.236, 1, src/ipcbridge.cpp (155)] info: Recommended port name: Pipe Available: \\.\pipe\AkVCamAssistant
AkVCam_Client0[2020-11-25 14:17:50.243, 2, src/ipcbridge.cpp (835)] debug: static void AkVCam::IpcBridgePrivate::pipeStateChanged(void*, AkVCam::MessageServer::PipeState)
[2020-11-25 14:17:50.251, 2, src/ipcbridge.cpp (840)] info: Server Available
[2020-11-25 14:17:50.260, 2, src/ipcbridge.cpp (140)] debug: bool AkVCam::IpcBridge::registerPeer()
[2020-11-25 14:17:50.260, 1, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:17:50.262, 2, src/ipcbridge.cpp (155)] info: Recommended port name: AkVCam_Client1
[2020-11-25 14:17:50.263, 1, src/messageserver.cpp (129)] info: Starting mode receive
[2020-11-25 14:17:50.263, 2, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:17:50.265, 2, src/messageserver.cpp (129)] info: [2020-11-25 14:17:50.265, 1, src/ipcbridge.cpp (174)] info: Registering port name: AkVCam_Client0
Starting mode receive
[2020-11-25 14:17:50.271, 1, src/ipcbridge.cpp (192)] info: Peer registered as AkVCam_Client0
terminate called without an active exception
[2020-11-25 14:17:50.273, 1, src/ipcbridge.cpp (549)] debug: void AkVCam::IpcBridge::updateDevices()
[2020-11-25 14:17:50.274, 1, src/utils.cpp (59)] debug: std::string AkVCam::locatePluginPath()
[2020-11-25 14:17:50.275, 1, src/ipcbridge.cpp (551)] debug: Plugin path: D:\AkVirtualCamera.plugin\x64
[2020-11-25 14:17:50.280, 1, src/ipcbridge.cpp (557)] debug: Plugin binary: D:\AkVirtualCamera.plugin\x64\AkVirtualCamera.dll
[2020-11-25 14:17:50.291, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:17:50.292, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:17:50.295, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:17:50.303, 1, src/preferences.cpp (574)] debug: Value: logfile
[2020-11-25 14:17:50.305, 1, src/plugininterface.cpp (362)] info: Sending debug output to C:\Users\spwil\AppData\Local\Temp\\AkVirtualCamera.log
[2020-11-25 14:17:50.343, 1, src/ipcbridge.cpp (199)] debug: void AkVCam::IpcBridge::unregisterPeer()
here, I click on Add output
and webcamoid hangs. so I uninstall it:
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -u
[2020-11-25 14:22:04.551, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:22:04.554, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:22:04.557, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:22:04.558, 1, src/preferences.cpp (574)] debug: Value: logfile
here's an example of where AkVCamAssistant hangs when uninstalling as denoted by ^C
^C
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -u
[2020-11-25 14:22:07.932, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:22:07.933, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:22:07.934, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:22:07.935, 1, src/preferences.cpp (574)] debug: Value: logfile
aaaaand where AkVCamManager is unresponsive:
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
^C
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
after a few seconds of unresponsiveness, here I opened task manager and killed the AkVCamManager process that was being used by the command line, hence no ^C
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
^C
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
^C
here I opened task manager and killed the AkVCamManager process that was being used by webcamoid.
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -u
[2020-11-25 14:22:39.752, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:22:39.755, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:22:39.756, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:22:39.760, 1, src/preferences.cpp (574)] debug: Value: logfile
ran this again to make sure it worked, though this probably didnt do anything:
D:\AkVirtualCamera.plugin\x64>AkVCamAssistant.exe -u
[2020-11-25 14:22:40.651, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:22:40.653, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:22:40.654, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:22:40.657, 1, src/preferences.cpp (574)] debug: Value: logfile
and NOW AkVCamManager.exe is responsive again!
D:\AkVirtualCamera.plugin\x64>AkVCamManager.exe update
[2020-11-25 14:22:44.605, 1, src/messageserver.cpp (125)] debug: bool AkVCam::MessageServer::start(bool)
[2020-11-25 14:22:44.606, 1, src/messageserver.cpp (134)] info: Starting mode send
[2020-11-25 14:22:44.609, 1, src/ipcbridge.cpp (140)] debug: bool AkVCam::IpcBridge::registerPeer()
[2020-11-25 14:22:44.615, 1, src/ipcbridge.cpp (549)] debug: void AkVCam::IpcBridge::updateDevices()
[2020-11-25 14:22:44.617, 1, src/utils.cpp (59)] debug: std::string AkVCam::locatePluginPath()
[2020-11-25 14:22:44.619, 1, src/ipcbridge.cpp (551)] debug: Plugin path: D:\AkVirtualCamera.plugin\x64
[2020-11-25 14:22:44.622, 1, src/ipcbridge.cpp (557)] debug: Plugin binary: D:\AkVirtualCamera.plugin\x64\AkVirtualCamera.dll
[2020-11-25 14:22:44.625, 1, src/preferences.cpp (92)] debug: std::string AkVCam::Preferences::readString(const string&, const string&)
[2020-11-25 14:22:44.626, 1, src/preferences.cpp (569)] debug: bool AkVCam::Preferences::readValue(const string&, DWORD, PVOID, LPDWORD)
[2020-11-25 14:22:44.629, 1, src/preferences.cpp (573)] debug: SubKey: SOFTWARE\Webcamoid\VirtualCamera\
[2020-11-25 14:22:44.632, 1, src/preferences.cpp (574)] debug: Value: logfile
[2020-11-25 14:22:44.633, 1, src/plugininterface.cpp (362)] info: Sending debug output to C:\Users\spwil\AppData\Local\Temp\\AkVirtualCamera.log
[2020-11-25 14:22:44.657, 1, src/ipcbridge.cpp (199)] debug: void AkVCam::IpcBridge::unregisterPeer()
[2020-11-25 14:22:44.658, 1, src/messageserver.cpp (144)] debug: void AkVCam::MessageServer::stop(bool)
[2020-11-25 14:22:44.661, 1, src/messageserver.cpp (144)] debug: void AkVCam::MessageServer::stop(bool)
[2020-11-25 14:22:44.661, 1, src/messageserver.cpp (144)] debug: void AkVCam::MessageServer::stop(bool)
[2020-11-25 14:22:44.662, 1, src/messageserver.cpp (144)] debug: void AkVCam::MessageServer::stop(bool)
D:\AkVirtualCamera.plugin\x64>echo bruh
bruh
D:\AkVirtualCamera.plugin\x64>
@ayunami2000 will check this once I finish with akvcam, I'll fix that for sure but I can only work in one thing at time.
And finally the virtual camera is also working in Windows.
The vcam segfault some times, but even though this is a big advance. also it is 1:1 features with the Mac vcam. And of course Webcamoid daily build already has support for it.
The wiki is ready and the virtual camera is now fully documented. The last step is fixing bugs and release.
And finally I'm at the last stage of the development. The final TODO list is as follows:
The virtual camera is feature closed by now, any other feature you want to be added, will be added in future releases.
And the final release is ready, closing.
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:
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 :smile: