- Notifications
You must be signed in to change notification settings - Fork19
Mac DSLR webcam plugin for using DSLRs for video conferencing and streaming.
License
dognotdog/ptpwebcam
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Large sensor digital still cameras can provide an exceptionally good image for video conferencing, compared to most built-in web cameras.
This is a plugin to make compatible digital cameras available as webcams in video calls, for example in Zoom or Skype on macOS. It also allows control of camera settings from the computer to adjust exposure parameters and focus.
The project consists of a CoreMediaIO DAL plugin, and a preview app to test functionality.
Note: only video is currently captured, no audio.
A compatible camera connected via USB to a Mac running macOS / OS X 10.12 through 10.15.
Download and install the latest release from thePTP Webcam Homepage.
Installer packages for older releases are available from theReleases page of this project.
If you want to build from source, you need Xcode. You can build the project and the plugin should be automatically copied into/Library/CoreMediaIO/Plug-Ins/DAL
to be available to the system. However, apps withLibrary Validation enabled will need to have codesigning disabled to be able to access the plugin, see theKnown Issues section below.
OpeningQuicktime Player and creating aNew Movie Recording viaFile -> New Movie Recording
, then selecting the camera source can be used to verify functionality. The camera needs to be plugged in and turned on, and it might take a few seconds to show up.
Quicktime Player works because it hasLibrary Validation disabled out-of-the-box, unlike eg.Photo Booth, which has the capability to use different video sources, but is prevented from doing so becauseLibrary Validation is enabled.
Note: video quality in the camera selection drop-down menu must be set toMaximum to get a video resolution higher than 640x480.
If the camera is connected, a status bar item with the camera's model number should appear and can be used to change settings.
Delete the following files and reboot to uninstall PTP Webcam:
/Library/CoreMediaIO/Plug-Ins/DAL/PTPWebcamDALPlugin.plugin/Library/LaunchDaemons/org.ptpwebcam.PtpWebcamAssistant.plist/Library/LaunchAgents/org.ptpwebcam.PtpWebcamAgent.plist
The supported cameras and their capabilities are listed inCAMERAS.md. Cameras from Canon, Nikon, and Sony are currently supported.
Additionally many UVC (USB Video Class) cameras can also be controlled.
macOS applications that have library validation enabled cannot load DAL plugins that have not been signed or signed by another developer. Therefore, some popular video conferencing tools do not work out of the box.
The easiest way to workaround is to remove the signature for the offending applications, but note that this might be affected by security settings on your system, and might require to relax security settings.
Status for an unknown app can be checked viacodesign -d --entitlements :- /Path/to/App
and if any entitlements show up,com.apple.security.cs.disable-library-validation
needs to be among them:
<key>com.apple.security.cs.disable-library-validation</key><true/>
If it is not, codesigning has to be removed from the app and potentially its helper apps.
https://stackoverflow.com/a/62456259/4296447
Zoom version 5.1.1 and newer no longer has library validation issues. For older versions that do not show the plugin codesigning can be disabled:codesign --remove-signature /Applications/zoom.us.app
Skype version 8.62.0.85 and newer no longer has library validation issues, and work out of the box.
Older versions of Skype have several helper apps inside its application bundle that might need code signing disabled.
codesign --remove-signature /Applications/Skype.appcd /Applications/Skype.app/Contents/Frameworkscodesign --remove-signature Skype\ Helper.appcodesign --remove-signature Skype\ Helper\ \(Renderer\).app
Additional helpers might be named differently in different Skype versions.
codesign --remove-signature /Applications/Google\ Chrome.appcodesign --remove-signature /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Helpers/Google\ Chrome\ Helper.appcodesign --remove-signature /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Helpers/Google\ Chrome\ Helper\ \(GPU\).appcodesign --remove-signature /Applications/Google\ Chrome.app/Contents/Frameworks/Google\ Chrome\ Framework.framework/Helpers/Google\ Chrome\ Helper\ \(Plugin\).app
codesign --remove-signature /Applications/Brave\ Browser.appcodesign --remove-signature /Applications/Brave\ Browser.app/Contents/Frameworks/Brave\ Browser\ Framework.framework/Helpers/Brave\ Browser\ Helper.appcodesign --remove-signature /Applications/Brave\ Browser.app/Contents/Frameworks/Brave\ Browser\ Framework.framework/Helpers/Brave\ Browser\ Helper\ \(GPU\).appcodesign --remove-signature /Applications/Brave\ Browser.app/Contents/Frameworks/Brave\ Browser\ Framework.framework/Helpers/Brave\ Browser\ Helper\ \(Plugin\).app
codesign --remove-signature "/Applications/Microsoft Teams.app"codesign --remove-signature "/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper.app"codesign --remove-signature "/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (GPU).app"codesign --remove-signature "/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (Plugin).app"codesign --remove-signature "/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (Renderer).app"
sudo codesign -f -s - /Applications/Discord.app/Contents/Frameworks/Discord\ Helper\ \(Renderer\).app/
The PTP Webcam agent, which handles the low level camera interaction and user interface, logs debug messages to
/tmp/org.ptpwebcam.PtpWebcamAgent.stderr.log
and crash logs can be found at
~/Library/Logs/DiagnosticReports/
starting withPtpWebcamLaunchAgent
PTP Webam is incompatible with Canon's EOS Webcam Utility software, is Canon's software prevents PTP Webcam from accessing any attached camera. Therefore,/Library/CoreMediaIO/Plug-Ins/DAL/EOSWebcam.plugin
has to be removed or deleted before PTP Webcam can work.
This project is open-source and free to use, but can besupported through Patreon.
If you'd like to contribute in another way, contactdognotdog directly.
The full license is available inLICENSE.md
at the same location as this readme.
Copyright (C) 2020 Doemoetoer Gulyas
This program is free software: you can redistribute it and/or modifyit under the terms of the GNU General Public License as published bythe Free Software Foundation, either version 3 of the License, or(at your option) any later version.
This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See theGNU General Public License for more details.
You should have received a copy of the GNU General Public Licensealong with this program. If not, seehttps://www.gnu.org/licenses/.
Thanks to Marty Swartz for being the first to help testing additional cameras.
This work would not have been possible without other open-source work:
About
Mac DSLR webcam plugin for using DSLRs for video conferencing and streaming.