Chrome에서 인식할 수 있는 가상 웹캠을 만들기 위해 v4l2-loopback을 사용하고 있습니다. 루프백을 처음 시작한 후에는 모든 것이 잘 작동하지만 처음으로 루프백을 종료하면 더 이상 작동하지 않습니다. ctrl-c를 사용하거나 "q"를 보내 ffmpeg를 죽이면 이런 일이 발생합니다. sudo를 사용하여 ffmpeg를 두 번째로 실행하면 작동하지만 sudo를 사용하거나 일반 사용자로 실행한 후에는 작동하지 않습니다. 그래서 사용자당 한 번만 작동하는 것 같아서 각 사용자가 일부 파일을 생성하지만 제대로 정리하지 않는다는 생각이 들게 됩니다.
루프백을 효과적으로 닫고 여는 방법은 무엇입니까?
루프백 스크립트는 다음과 같습니다.
#!/bin/bash
facecam_serial_id="/dev/v4l/by-id/usb-Elgato_Elgato_Facecam_FW42K1A07613-video-index0"
ffmpeg -v debug -f v4l2 -input_format uyvy422 -framerate 60 -video_size 1920x1080 -i $facecam_serial_id -pix_fmt yuyv422 -f v4l2 /dev/video9
ffmpeg가 작동할 때의 출력은 다음과 같습니다. https://termbin.com/h9xb
ffmpeg가 작동하지 않을 때의 출력은 다음과 같습니다. https://termbin.com/5573
처음으로 루프백을 종료한 후 Journalctl에 다음과 같은 오류가 발생합니다.
spa.v4l2: '/dev/video0' VIDIOC_QUERYCTRL: 깨진 파이프 카메라가 현재 작동하는지 테스트하기 위해 이 명령을 사용합니다.
ffplay -f v4l2 /dev/video9
테스트 명령이 더 이상 작동하지 않을 때 발생하는 오류는 다음과 같습니다.
[video4linux2,v4l2 @ 0x7ff1d4000c80] Not a video capture device.
/dev/video9: No such device
모든 아이디어에 감사드립니다!
답변1
최근에 동일한 문제가 발생했습니다.OBS 스튜디오.
수정은 아니지만 나에게 도움이 된 해결 방법은 다음과 같습니다.
# Loopback not working or working once?
# Try removing and reloading:
#
sudo modprobe -r v4l2loopback
sudo modprobe v4l2loopback
sudo depmod -a
행운을 빌어요!
답변2
여기서 이 질문을 찾았습니다. https://thesquareplanet.com/blog/camera-webcam-on-linux/
나는 Elgato가 스냅을 시작하고 중지하는 데 매우 까다롭다는 것을 알았습니다. 그리고 녹음할 때마다 플러그를 뽑았다가 다시 연결해야 하므로 금방 낡아집니다. 이 프로그램을 사용하여 "소프트" 재설정을 수행하면 이 문제를 매우 쉽게 해결할 수 있다는 것이 밝혀졌습니다. 지침은 다음과 같습니다. https://askubuntu.com/questions/645/how-do-you-reset-a-usb-device-from-the-command-line
내 자신의 작은 기여:
#!/bin/bash
Sample lsusb output for Elgato Facecam
Bus 004 Device 003: ID 0fd9:0078 Elgato Systems GmbH Elgato Facecam
facecam_vendor_id="0fd9:0078"
facecam_usb_path=$(lsusb -d $facecam_vendor_id | awk '{print "/dev/bus/usb/"$2"/"$4}' | awk '{print substr($0, 0, length($0)-1)}')
<path_to_binary>/usb_reset $facecam_usb_path
답변3
나는 또한 이것에 대해 약간의 행운을 누렸습니다.
sudo modprobe -r v4l2loopback
sudo modprobe v4l2loopback
sudo depmod -a
이는 OBS가 Microsoft Teams와 작동하기 위한 것입니다. Linux의 Teams는 화면 공유를 지원하지 않기 때문에 해결 방법입니다.
답변4
이것이 여전히 관련이 있는지는 확실하지 않지만 Elgato Facecam을 동기화 모드로 변경하여 USB를 분리했다가 다시 연결해야 하는 필요성을 피할 수 있었습니다(Windows에서는 Linux에서 사용할 때도 여전히 그런 것 같습니다).
https://help.elgato.com/hc/en-us/articles/4681224843917-Elgato-Facecam-USB 전송 모드 변경 방법
최근 4.09 펌웨어 업데이트에서는 루프백의 필요성이 제거되었을 수도 있습니다.
https://gist.github.com/catrielmuller/71ae055871893d289476ee570fd953d8