
我正在開發一個項目,其中將 Raspberry Pi 用作多個伺服系統的 I/O 板,這些伺服系統實際上由另一台電腦控制,透過乙太網路連接到 RPi。
我需要在專案中添加 2 個 USB 網路攝影機,並希望將它們連接到 RPi,以維護 I/O 的單一位置(如果有意義的話)。
我正在尋找最簡單、延遲最低的方法將輸入從網路攝影機轉發到主機。我嘗試使用 Usbip 和 ffmpeg 來傳輸數據,但這兩種方法都遇到了問題。還有其他建議嗎?或者我應該繼續採用我嘗試過的方法之一。
謝謝!
答案1
您的網路攝影機有硬體壓縮嗎?或者你正在對 RPi 進行壓縮?它的 VideoCore 處理器適合這種類型的工作,但是...您必須使用 OpenMAX 將負載卸載到 VideoCore,因為 Linux 運行的 ARM 協處理器甚至無法壓縮低清晰度流。載入VideoCore編解碼器的程式是omxplayer
一些gstreamer
插件。
即使使用 VideoCore,您也會遇到從 USB 透過內部互連獲取原始視訊資料的頻寬問題。
因此,您的可行選擇是
- 將預壓縮(在網路攝影機內部)視訊從 USB 複製到乙太網路。
- 使用連接到 Raspberry Pi 上高頻寬視訊連接埠的 RPi 相機模組,直接進入 VideoCore 進行處理和壓縮。
後一種選擇可能會降低相當多的延遲,但您只能獲得一個串流。理論上可以透過單一視訊連接埠交錯兩個串流,但 VideoCore 上的編解碼器需要設計為接受和分離兩個串流,並且這樣做的技術資料只能在 NDA 下向 Broadcom 的最大客戶提供。
您可以在 Rasberry Pi 論壇上找到有關視訊編解碼器開發過程的更多資訊。簡短版本:Broadcom 完成了大部分工作,Raspberry Pi 基金會可以存取技術數據,但沒有足夠的工程師,並且 NDA 禁止他們外包工作。