Merge pull request #29320 from wxy/20220107-Lock-your-camera-to-a-specific-USB-port-in-OBS

RP:published/20220107 Lock your camera to a specific USB port in OBS.md
This commit is contained in:
Xingyu.Wang 2023-05-06 23:38:03 +08:00 committed by GitHub
commit 48bed0fc0b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,32 +3,34 @@
[#]: author: "Seth Kenlon https://opensource.com/users/seth"
[#]: collector: "lujun9972"
[#]: translator: "hanszhao80"
[#]: reviewer: " "
[#]: publisher: " "
[#]: url: " "
[#]: reviewer: "wxy"
[#]: publisher: "wxy"
[#]: url: "https://linux.cn/article-15790-1.html"
在 OBS 中将摄像头锁定到特定的 USB 端口
======
为了使复杂的摄像头设置标准化,你可以对 Linux 文件系统中摄像头的位置分配施加一些特殊规则。
![使用笔记本电脑的人][1]
如果在 Linux 上用多个摄像头 [使用 OBS 进行直播][2],你可能会注意到摄像头会在开机时按照它们被检测到的顺序加载。通常情况下你可能不会太在意,但如果你有一个永久的直播设置和复杂的 OBS 模板,你需要知道物理世界中哪个摄像头将会显示在虚拟世界的哪个屏幕上。换句话说,你不希望今天将一个设备分配为“摄像头 A”而明天它却成为“摄像头 B”。
> 为了使复杂的摄像头设置标准化,你可以对 Linux 文件系统中摄像头的位置分配施加一些特殊规则。
![][0]
如果在 Linux 上用多个摄像头 [使用 OBS 进行直播][2],你可能会注意到摄像头会在开机时按照它们被检测到的顺序加载。通常情况下你不需要特别在意,但如果你有一个固定的直播设置和复杂的 OBS 模板,你需要知道现实世界中哪个摄像头将会显示在虚拟世界的哪个屏幕上。换句话说,你不希望今天将一个设备分配为“摄像头 A”而明天它却成为“摄像头 B”。
为了使复杂的摄像头设置标准化,你可以对 Linux 文件系统中摄像头的位置分配施加一些特殊规则。
### udev 子系统
在 Linux 上处理硬件外设的系统称为 udev。它检测和管理你接入计算机的所有设备。你可能没有意识到它的存在因为它不会吸引太多注意力。尽管当你插入 USB 闪存驱动器以在桌面上打开它或连接打印机时,你肯定与它互过。
在 Linux 上处理硬件外设的系统称为 udev。它检测和管理你接入计算机的所有设备。你可能没有意识到它的存在因为它不会吸引太多注意力。尽管当你插入 USB 闪存驱动器以在桌面上打开它或连接打印机时,你肯定与它互过。
### 硬件检测
假设你有两个 USB 摄像头:一个在电脑左侧,另一个在右侧。左侧摄像头拍摄近景,右侧摄像头拍摄远景,并且在直播过程中你需要切换两个摄像头。在 OBS 中,你将每个摄像头添加到 **<ruby><rt>Sources</rt></ruby>** 面板中,并直观地将它们命名为 **camLEFT****camRIGHT**
假设你有两个 USB 摄像头:一个在电脑左侧,另一个在右侧。左侧摄像头拍摄近景,右侧摄像头拍摄远景,并且在直播过程中你需要切换两个摄像头。在 OBS 中,你将每个摄像头添加到 <ruby><rt>Sources</rt></ruby> 面板中,并直观地将它们命名为 “camLEFT” 和 “camRIGHT”
设想一种最坏的场景,你有两个 _相同的_ 摄像头:它们是同一品牌同一型号。这是最坏的情况,因为当两个硬件设备完全相同时,它们几乎不可能有任何独特的 ID以便你的电脑能够将它们区分开来。
设想一种最坏的场景,你有两个 _相同的_ 摄像头:它们是同一品牌同一型号。这是最坏的情况,因为当两个硬件设备完全相同时,它们几乎不可能有任何独特的 ID以便你的电脑能够将它们区分开来。
不过,这个难题有解决办法,只需要一些简单的终端命令进行一些调查。
#### 1. 获取厂商和产品 ID
#### 1获取厂商和产品 ID
首先,将一个摄像头插入你想要它分配到的 USB 端口。然后输入以下命令:
@ -46,7 +48,7 @@ Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
```
你通常可以专门搜索字符串 `cam` 以缩小结果范围,因为大多数(但不是所有)摄像头都会报告为摄像头
你通常可以专门搜索字符串 `cam` 以缩小结果范围,因为大多数(但不是所有)摄像头都会报告为 “camera”
```
$ lsusb | grep -i cam
@ -56,9 +58,9 @@ Bus 003 Device 006: ID 045e:0779 Microsoft Corp. LifeCam HD-3000
这里有很多信息。ID 被列为 `045e:0779`。第一个数字是供应商 ID第二个数字是产品 ID。把它们写下来因为稍后你会需要它们。
#### 2. 获取 USB 标识符
#### 2获取 USB 标识符
你还获取了摄像头的设备路径:总线 3设备 6。在 Linux中有一句话“一切皆文件”实际上USB 设备被描述为以 `/dev/bus/usb/` 开始,以总线(本例中为 003和设备本例中为 006结尾的文件路径。查看 `lsusb` 输出中的总线和设备号。它们告诉你该摄像头位于 `/dev/bus/usb/003/006`
你还获取了摄像头的设备路径:总线 3设备 6。在 Linux 中有一句话“一切皆文件”实际上USB 设备被描述为以 `/dev/bus/usb/` 开始,以总线(本例中为 003和设备本例中为 006结尾的文件路径。查看 `lsusb` 输出中的总线和设备号。它们告诉你该摄像头位于 `/dev/bus/usb/003/006`
你可以使用 `udevadm` 命令获取此 USB 设备的内核代号:
@ -71,7 +73,7 @@ $ sudo udevadm info --attribute-walk /dev/bus/usb/003/006 | grep "KERNEL="
这个例子中的内核 USB 标识符是 `3-6.2.1`。把你系统中的标识符记下来,因为之后也会用到它。
#### 3. 为每个摄像头重复该过程
#### 3为每个摄像头重复该过程
将另一个摄像头(如果你有多个摄像头,则为每个摄像头)连接到要分配给它的 USB 端口。这与你用于另一个摄像头的 USB 端口是不同的!
@ -101,11 +103,11 @@ SUBSYSTEM=="usb", KERNEL=="3-6.2.1", ATTR{idVendor}=="045e", ATTR{idProduct}=="0
```
这些规则告诉 udev当在特定的 USB 位置找到与特定供应商和产品 ID 匹配的设备时,创建一个名为 `video100``video101` 的符号链接(有时也称为“别名”)。符号链接大多是任意的。我使用大数值数字,这样它们就容易被发现,并且数字不能与现有设备冲突。如果实际上有超过 101 个摄像头连接到计算机上,请使用 `video200``video201` 以确保安全(记得联系我!我很想了解 _那个_ 项目)。
这些规则告诉 udev当在特定的 USB 位置找到与特定供应商和产品 ID 匹配的设备时,创建一个名为 `video100``video101` 的符号链接(有时也称为“别名”)。符号链接大多是任意的。我使用较大的数字,这样它们就容易被发现,并且数字不能与现有设备冲突。如果实际上有超过 101 个摄像头连接到计算机上,请使用 `video200``video201` 以确保安全(记得联系我!我很想了解 _该_ 项目的情况)。
### 重启
重新启动计算机。你现在可以让摄像头保持连接,但实际上这并不重要。一旦 udev 加载了规则,它就会遵循这些规则,无论设备是否在启动期间附加或稍后插入。
重新启动计算机。你现在可以让摄像头保持连接在计算机上,但实际上这并不重要。一旦 udev 加载了规则,它就会遵循这些规则,无论设备是否在启动期间附加或稍后插入。
许多人说 Linux 从不需要重启,但是 udev 在引导期间加载其规则,而且此外,你想保证你的 udev 规则在重新启动时也起作用。
@ -126,10 +128,10 @@ $ ls -1 /dev/video*
![两个摄像头角度][3]
(Photo by [Jeff Siepman][4])
你可以在 OBS 中使用这些符号链接,这样 camLEFT 始终是 camLEFTcamRIGHT 始终是 camRIGHT。
*题图MJ/9bb70b6d-9f49-493a-8daf-5546d207781f*
--------------------------------------------------------------------------------
via: https://opensource.com/article/22/1/cameras-usb-ports-obs
@ -137,7 +139,7 @@ via: https://opensource.com/article/22/1/cameras-usb-ports-obs
作者:[Seth Kenlon][a]
选题:[lujun9972][b]
译者:[hanszhao80](https://github.com/hanszhao80)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
@ -147,3 +149,4 @@ via: https://opensource.com/article/22/1/cameras-usb-ports-obs
[2]: https://opensource.com/life/15/12/real-time-linux-video-editing-with-obs-studio
[3]: https://opensource.com/sites/default/files/uploads/obs-udev.jpg (Two camera angles)
[4]: https://unsplash.com/@jeffsiepman?utm_source=unsplash&utm_medium=referral&utm_content=creditCopyText
[0]: https://img.linux.net.cn/data/attachment/album/202305/06/233102xqfzerq9mek1e9mt.png