Linux

如何在 Linux 上將我的桌面/螢幕作為(假)“網路攝像頭”流式傳輸到 /dev/video1?

  • July 7, 2019

我有兩個命令,一個可以讓我將螢幕錄製到 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

為什麼我不能同時執行這兩個?好吧,每當我使用“網路攝像頭”時,第二個命令都會從文件的開頭開始流式傳輸。所以我必須把它計時得很近,否則會有延遲。

我嘗試了很多很多解決方案(包括使用 gstreamer 而不是 ffmpeg 的解決方案),但都無法正常工作。這是我最後的希望。

如何在 Ubuntu 上將我的桌面/螢幕作為(假)“網路攝像頭”流式傳輸到 /dev/video1?

解決了。

解決步驟:

  1. 解除安裝以前的 v4l2loopbacksudo 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根據您已經擁有的攝像頭數量更改*video_nr 。*零索引
  7. ls -al /dev/video*使用 /dev/video$$ video_nr $$使用 ffmpeg
  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應該這樣做。

引用自:https://unix.stackexchange.com/questions/528400