嘗試使用樹莓派/picam 的串流來模擬硬體攝影機?

嘗試使用樹莓派/picam 的串流來模擬硬體攝影機?

我有一個連接到 wifi 的樹莓派和 pi cam v2。我正在嘗試透過 wifi 將相機輸入串流傳輸到筆記型電腦,然後使該串流看起來就像筆記型電腦上的硬體相機一樣。我想這樣做是為了將其放入需要硬體攝影機的其他軟體中(無法重寫該軟體,只需解決它)。

我在筆記型電腦上運行 ubuntu 18.04。根據我的研究,使用 ffmpeg 和 vfl2loopback 的某種組合應該很可能會實現這一點。我先安裝這個函式庫將相機串流到網路伺服器:https://github.com/silvanmelchior/RPi_Cam_Web_Interface這有效,我可以在瀏覽器中存取相機串流http://10.0.0.47/http為了簡單起見,我沒有設定使用者名稱/密碼。根據 nmap 輸出,我相信相機端口是 80。

我現在正在嘗試在我的 ubuntu 筆記型電腦上重定向串流。根據我的研究和實驗,這個命令是我最接近的命令:

ffmpeg-re-ihttp://10.0.0.47/html-map 0:v -f v4l2 /dev/video0

(或也與連接埠 80 而不是 /html 相同,不確定這是否重要): ffmpeg -re -ihttp://10.0.0.47:80-map 0:v -f v4l2 dev/video0

一開始這似乎有效,但隨後會產生以下錯誤:

http://10.0.0.47:80: 處理輸入時發現無效數據

從谷歌搜尋來看,這可能是由於 rpi_cam_web 介面發出的流類型錯誤造成的,但我不確定這是否屬實,如果是,如何修復它。我還調查了訪問網頁伺服器的頁面的 html 程式碼,我可以看到它正在發送一系列 jpg,這些 jpg 檔案隨著檔案名稱中的時間戳而不斷變化。所以也許這就是問題所在,但同樣不確定。

有任何想法嗎?非常感謝您的幫忙。

編輯:我嘗試了另一種方法,這似乎更進一步​​,但仍然遇到問題:

(在 pi 上): raspivid -o - -t 0 -n -w 320 -h 240 -fps 30| cvlc -vvv 流:///dev/stdin --sout '#rtp{sdp=rtsp://:8000/}' :demux=h264

-->這將啟動一個串流,我可以在 VLC 媒體播放器中成功查看該串流

(然後在主機系統上): gst-launch-1.0 -v rtspsrc location=rtsp://10.0.0.47:8000/ ! v4l2sink設備=/dev/video4

我嘗試了各種設備,例如 /dev/video0、/dev/video1 等。 它們都產生“/dev/videoX”不是輸出設備”,除了 video4,它一開始似乎可以工作,但隨後出現錯誤出與:

錯誤:來自元素 /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1:內部資料流錯誤。其他偵錯資訊:gstbasesrc.c(3072):gst_base_src_loop():/GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0/GstUDPSrc:udpsrc1:串流停止,原因未連結(-1)執行在0:00:00.0psrc1:串流停止,原因未連結(-1)執行在0:00:00.0823結束後

知道那裡可能出了什麼問題嗎?

再次感謝!

編輯2:

我可以讓它使用以下命令序列:

(在 pi 上): raspivid -o - -t 0 -n -w 320 -h 240 -fps 30| cvlc -vvv 流:///dev/stdin --sout '#rtp{sdp=rtsp://:8000/}' :demux=h264

(在主機上): ffmpeg -f h264 -i tcp://10.0.0.47:8000/ -f v4l2 -pix_fmt yuv420p /dev/video0

這不會引發任何錯誤,但我無法 100% 確定它是否有效,因為我還無法在我試圖將相機輸入的軟體中載入串流。我嘗試用​​這個網站工具測試它:

https://test.webrtc.org/

該工具允許我選擇“虛擬視訊設備 0x0000”,我很確定是這樣,但它隨後告訴我“未檢測到視頻設備”,在測試中找不到任何攝像頭,然後是相同的虛擬視頻在後續頁面重新載入時,設備不會顯示為選項。所以我認為我傳遞流的方式有問題

答案1

該網站展示如何將 RPi 串流傳輸到 OBS: https://www.instructables.com/Webcam-Over-WiFi-for-OBS/

然後你可以使用OBS虛擬相機來模擬硬體相機。

(我個人使用OBS虛擬相機,但沒有與RPi一起使用。)

或者你可以嘗試這個: https://www.tomshardware.com/uk/how-to/use-raspberry-pi-as-pc-webcam

相關內容