데스크탑/화면을 Linux의 /dev/video1에 (가짜) "웹캠"으로 스트리밍하려면 어떻게 해야 합니까?

데스크탑/화면을 Linux의 /dev/video1에 (가짜) "웹캠"으로 스트리밍하려면 어떻게 해야 합니까?

하나는 화면을 AVI 비디오 파일로 녹화할 수 있는 명령이고 다른 하나는 비디오 파일을 (가짜) "웹캠"으로 스트리밍할 수 있는 명령입니다. 이는 공유할 화면 선택을 지원하지 않는 앱에 유용합니다(Slack을 살펴보겠습니다).

명령 #1(https://askubuntu.com/a/892683/721238):

ffmpeg -y -f alsa -i hw:0 -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+1920,0 -c:v libx264 -pix_fmt yuv420p -qp 0 -preset ultrafast screenStream.avi

명령 #2(https://unix.stackexchange.com/a/466683/253391):

ffmpeg -re -i screenStream.avi -map 0:v -f v4l2 /dev/video1

왜 이 두 가지를 병렬로 실행할 수 없나요? 글쎄, "웹캠"을 사용할 때마다 두 번째 명령은 파일 시작 부분부터 스트리밍을 시작합니다. 그래서 저는 일정을 아주 가깝게 잡아야 합니다. 그렇지 않으면 지연이 생길 것입니다.

나는 많은 솔루션(ffmpeg 대신 gstreamer를 사용하는 솔루션 포함)을 시도했지만 아무것도 작동하지 않습니다. 이것이 나의 마지막 희망이다.

데스크탑/화면을 Ubuntu의 /dev/video1에 (가짜) "웹캠"으로 스트리밍하려면 어떻게 해야 합니까?

답변1

해결되었습니다.

해결 단계:

  1. 이전 v4l2loopback을 제거합니다.sudo modprobe -r v4l2loopback
  2. git clone https://github.com/umlaeute/v4l2loopback/
  3. make && sudo make install(보안 부팅을 사용하는 경우 먼저 서명해야 합니다.https://ubuntu.com/blog/how-to-sign-things-for-secure-boot)
  4. sudo depmod -a
  5. videodev 드라이버 로드sudo modprobe videodev
  6. sudo insmod ./v4l2loopback.ko devices=1 video_nr=2 exclusive_caps=1변화비디오 번호이미 보유하고 있는 카메라 수에 따라 다릅니다. 제로 인덱스
  7. ls -al /dev/video*ffmpeg와 함께 /dev/video[video_nr] 사용
  8. sudo ffmpeg -f x11grab -r 60 -s 1920x1080 -i :0.0+1920,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 -vf 'hflip,scale=640:360' /dev/video2
  9. 가다https://webcamtests.com가짜 카메라를 테스트해 보세요 가상 캠
  10. 이익! 피복재

부팅 간에 이것이 지속되도록 하려면,https://askubuntu.com/a/1024786/721238그것은 이루어져야합니다.

관련 정보