{"id":13478051,"url":"https://github.com/dognotdog/ptpwebcam","last_synced_at":"2025-03-27T07:30:44.709Z","repository":{"id":45811258,"uuid":"279685230","full_name":"dognotdog/ptpwebcam","owner":"dognotdog","description":"Mac DSLR webcam plugin for using DSLRs for video conferencing and streaming.","archived":false,"fork":false,"pushed_at":"2023-05-28T02:27:34.000Z","size":3954,"stargazers_count":185,"open_issues_count":87,"forks_count":19,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-10-30T11:41:54.610Z","etag":null,"topics":["dslr","mac","macos","nikon","uvc","video-conferencing","webcam"],"latest_commit_sha":null,"homepage":"https://ptpwebcam.org","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dognotdog.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":null,"patreon":"dognotdog","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2020-07-14T20:21:41.000Z","updated_at":"2024-10-23T09:44:36.000Z","dependencies_parsed_at":"2024-01-14T08:38:07.277Z","dependency_job_id":null,"html_url":"https://github.com/dognotdog/ptpwebcam","commit_stats":null,"previous_names":[],"tags_count":34,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dognotdog%2Fptpwebcam","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dognotdog%2Fptpwebcam/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dognotdog%2Fptpwebcam/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dognotdog%2Fptpwebcam/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dognotdog","download_url":"https://codeload.github.com/dognotdog/ptpwebcam/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245802203,"owners_count":20674610,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dslr","mac","macos","nikon","uvc","video-conferencing","webcam"],"created_at":"2024-07-31T16:01:51.792Z","updated_at":"2025-03-27T07:30:42.591Z","avatar_url":"https://github.com/dognotdog.png","language":"Objective-C","funding_links":["https://patreon.com/dognotdog","https://www.patreon.com/dognotdog"],"categories":["Objective-C"],"sub_categories":[],"readme":"#  PTP Webcam – DSLR Live View Video and Webcam Control\n\nLarge sensor digital still cameras can provide an exceptionally good image for video conferencing, compared to most built-in web cameras.\n\nThis 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.\n\nThe project consists of a CoreMediaIO DAL plugin, and a preview app to test functionality.\n\n**Note:** only video is currently captured, no audio.\n\n## Installation\n\n### System Requirements\n\nA compatible camera connected via USB to a Mac running macOS / OS X 10.12 through 10.15. \n\n### Binary Packages\n\nDownload and install the latest release from the [PTP Webcam Homepage](https://ptpwebcam.org).\n\nInstaller packages for older releases are available from the [Releases page](https://github.com/dognotdog/ptpwebcam/releases) of this project. \n\n### Building from Source\n\nIf 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 with _Library Validation_ enabled will need to have codesigning disabled to be able to access the plugin, see the **Known Issues** section below.\n\n### Testing the Installation\n\nOpening _Quicktime Player_ and creating a _New Movie Recording_ via `File -\u003e 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.\n\n_Quicktime Player_ works because it has _Library 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 because _Library Validation_ is enabled.\n\n**Note:** video quality in the camera selection drop-down menu must be set to **Maximum** to get a video resolution higher than 640x480.\n\n#### What it should look like\n\nIf the camera is connected, a status bar item with the camera's model number should appear and can be used to change settings.\n\n\u003cimg src=\"docs/screenshot-cam-menu.png\" width=400px\u003e \u003cimg src=\"docs/screenshot-cam-select.png\" width=400px\u003e\n\n### Uninstalling\n\nDelete the following files and reboot to uninstall PTP Webcam:\n```\n/Library/CoreMediaIO/Plug-Ins/DAL/PTPWebcamDALPlugin.plugin\n/Library/LaunchDaemons/org.ptpwebcam.PtpWebcamAssistant.plist\n/Library/LaunchAgents/org.ptpwebcam.PtpWebcamAgent.plist\n```\n\n## Supported Cameras over USB\n\nThe supported cameras and their capabilities are listed in [CAMERAS.md](CAMERAS.md). Cameras from Canon, Nikon, and Sony are currently supported.\n\nAdditionally many UVC (USB Video Class) cameras can also be controlled.\n \n## Known Issues\n \n### Library Validation\n \nmacOS 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.\n \nThe 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.\n\nStatus for an unknown app can be checked via `codesign -d --entitlements :- /Path/to/App` and if any entitlements show up, `com.apple.security.cs.disable-library-validation` needs to be among them: \n```\n\u003ckey\u003ecom.apple.security.cs.disable-library-validation\u003c/key\u003e\n\u003ctrue/\u003e\n```\nIf it is not, codesigning has to be removed from the app and potentially its helper apps. \n\n#### References\n \nhttps://stackoverflow.com/a/62456259/4296447\n \n#### Zoom workaround\n \n 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:\n`codesign --remove-signature /Applications/zoom.us.app`\n \n#### Skype workaround\n\nSkype version 8.62.0.85 and newer no longer has library validation issues, and work out of the box.\n \nOlder versions of Skype have several helper apps inside its application bundle that might need code signing disabled. \n\n```\ncodesign --remove-signature /Applications/Skype.app\ncd /Applications/Skype.app/Contents/Frameworks\ncodesign --remove-signature Skype\\ Helper.app\ncodesign --remove-signature Skype\\ Helper\\ \\(Renderer\\).app\n```\nAdditional helpers might be named differently in different Skype versions.\n\n#### Google Chrome workaround\n\n```\ncodesign --remove-signature /Applications/Google\\ Chrome.app\ncodesign --remove-signature /Applications/Google\\ Chrome.app/Contents/Frameworks/Google\\ Chrome\\ Framework.framework/Helpers/Google\\ Chrome\\ Helper.app\ncodesign --remove-signature /Applications/Google\\ Chrome.app/Contents/Frameworks/Google\\ Chrome\\ Framework.framework/Helpers/Google\\ Chrome\\ Helper\\ \\(GPU\\).app\ncodesign --remove-signature /Applications/Google\\ Chrome.app/Contents/Frameworks/Google\\ Chrome\\ Framework.framework/Helpers/Google\\ Chrome\\ Helper\\ \\(Plugin\\).app\n```\n#### Brave workaround\n\n```\ncodesign --remove-signature /Applications/Brave\\ Browser.app\ncodesign --remove-signature /Applications/Brave\\ Browser.app/Contents/Frameworks/Brave\\ Browser\\ Framework.framework/Helpers/Brave\\ Browser\\ Helper.app\ncodesign --remove-signature /Applications/Brave\\ Browser.app/Contents/Frameworks/Brave\\ Browser\\ Framework.framework/Helpers/Brave\\ Browser\\ Helper\\ \\(GPU\\).app\ncodesign --remove-signature /Applications/Brave\\ Browser.app/Contents/Frameworks/Brave\\ Browser\\ Framework.framework/Helpers/Brave\\ Browser\\ Helper\\ \\(Plugin\\).app\n\n```\n\n#### Microsoft Teams workaround\n\n```\ncodesign --remove-signature \"/Applications/Microsoft Teams.app\"\ncodesign --remove-signature \"/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper.app\"\ncodesign --remove-signature \"/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (GPU).app\"\ncodesign --remove-signature \"/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (Plugin).app\"\ncodesign --remove-signature \"/Applications/Microsoft Teams.app/Contents/Frameworks/Microsoft Teams Helper (Renderer).app\"\n```\n\n#### Discord workaround\n\n```\nsudo codesign -f -s - /Applications/Discord.app/Contents/Frameworks/Discord\\ Helper\\ \\(Renderer\\).app/\n```\n\n### Debug / Crash Logs\n\nThe PTP Webcam agent, which handles the low level camera interaction and user interface, logs debug messages to\n```\n/tmp/org.ptpwebcam.PtpWebcamAgent.stderr.log\n```\nand crash logs can be found at \n```\n~/Library/Logs/DiagnosticReports/\n```\nstarting with `PtpWebcamLaunchAgent`\n\n### Canon EOS Webcam Utility Incompatibility\n\nPTP 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.\n\n## Funding and Sponsorship\n\nThis project is open-source and free to use, but can be [supported through Patreon](https://www.patreon.com/dognotdog).\n\nIf you'd like to contribute in another way, contact [dognotdog](https://github.com/dognotdog) directly.\n\n## License\n\nThe full license is available in `LICENSE.md` at the same location as this readme.\n\nCopyright (C) 2020 Doemoetoer Gulyas\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttps://www.gnu.org/licenses/\u003e.\n\n\n## Acknowledgements\n\nThanks to Marty Swartz for being the first to help testing additional cameras.\n\nThis work would not have been possible without other open-source work:\n- https://github.com/johnboiles/coremediaio-dal-minimal-example\n- https://github.com/lvsti/CoreMediaIO-DAL-Example\n- https://github.com/gphoto/libgphoto2\n- http://libptp.sourceforge.net\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdognotdog%2Fptpwebcam","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdognotdog%2Fptpwebcam","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdognotdog%2Fptpwebcam/lists"}