わかる人向け ¶
OBSの Video Capture Device (V4L2) は /dev/video0 などのパスで覚えていて、
よく取り違えるので、Media Source に /dev/v4l/by-id/* などを渡した方が良いということです。
そもそも何が問題なのか ¶
Linux版OBSの Video Capture Device (V4L2) のプロパティー上は、
一見、デバイスが固定化できているように見えます。
以下は実際に、キャプチャーカードを設定した状態です。

しかし、当該デバイス (キャプチャーカード) を引き抜くと…?

/dev/video1という表示になってしまいました。
嫌な予感はしつつ、カメラデバイスを挿入すると?

キャプチャーカードの映像を映していたはずの Video Capture Device (V4L2) が、カメラ映像に差し替わってしまいました。
これでは放送事故ですね。
補足1: キャプチャーカードの使用していた /dev/video1 が抜かれることにより開放され、
また、カメラが挿入されたことにより、/dev/video1にカメラが再割り当てられたことにより発生します。
補足2: この現象には Reina Sakiria が気づきました。
作戦その1: 固定的なSYMLINKを作る (失敗) ¶
sudo udevadm info --query=all /dev/video1
の結果を参考に、
/etc/udev/rules.d/99-webcam.rules に以下のようなファイルを作成し、
udevを用いて自動的にSYMLINKを作ってみることにしました。
SUBSYSTEM=="video4linux", ATTR{name}=="EMEET SmartCam C60E 4K: EMEET S", ATTR{index}=="0", SYMLINK+="my-webcam"
これで安定的に /dev/my-webcam を得られます!
しかしOBSは、任意のデバイスパスを入力できるインターフェースになっておらず、 そもそも設定できませんでした。
余談: デバイスを一意に識別するためのSYMLINK ¶
冷静になってみると、デバイスを一意に識別するためのSYMLINKは 最初から存在することを思い出しました。
もし、任意パスが設定可能ならば、それを最初から入力すればよいのです。
$ ls /dev/v4l/by-id/
usb-EMEET_EMEET_SmartCam_C60E_4K_A250401000104353-video-index0
usb-EMEET_EMEET_SmartCam_C60E_4K_A250401000104353-video-index1
usb-MACROSILICON_USB3.0_UHD_20210623-video-index0
usb-MACROSILICON_USB3.0_UHD_20210623-video-index1
注意として、Apple Facetime HDの様な、PCIeデバイスは列挙されません。
そのようなデバイスについては、by-path を使うと良いでしょう。
$ ls /dev/v4l/by-path/
/dev/v4l/by-path/pci-0000:02:00.0-video-index0
これらのようなパスがどこにあるかも、先程のudevadmコマンドで確認できます。
作戦その2: OBSのシーンファイルをいじる (半成功) ¶
OBSは、シーンの情報をJSONファイル (~/.config/obs-studio/basic/scenes/Untitled.json など) に保存します。
そこにある /dev/video1 をこっそり、
/dev/v4l/by-id/usb-EMEET_EMEET_SmartCam_C60E_4K_A250401000104353-video-index1
に書き換えてみました。

デバイスを取り違えることはなくなり、「起動直後は」 期待通りに動作しました!
しかし、デバイスを抜き差しすると、映像が止まり、復帰しません。 これは、ソースを有効化・無効化しても改善しませんでした。 これでは困りますね。
OBSの Video Capture Device (V4L2) の挙動 ¶
どうやら、ソースの有効・無効関係なく、カメラを掴みっぱなしにする挙動をするようです。
また、 なにやらudevを使って抜き差し検知 しているようで、しかしながら、SYMLINKを食わせることによりその挙動を破壊してしまったみたいです。
Video Capture Device (V4L2) を使うこと自体を諦めたほうが良さそうです。
作戦その3: メディアソースを使う (成功) ¶
ところでOBSは、Media Source という名前で、ffmpegによる任意入力をサポートしていることを思い出しました。
GUIでWrapされていて分かりづらいですが、このように設定すれば、V4L2ソースを映すことができました!

もしカメラが接続断しても、Reconnect Delay毎に再試行されるようです。
めでたしめでたし。