簡體   English   中英

接收到虛擬 v4l2 設備

[英]Sink to the virtual v4l2 device

我在 Ubuntu 19.04 上試過一個例子

gst-launch-1.0 videotestsrc ! v4l2sink device=/dev/video10

但是 gstreamer 失敗了

Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Cannot identify device '/dev/video10'.
Additional debug info:
v4l2_calls.c(609): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
system error: No such file or directory
Setting pipeline to NULL ...
Freeing pipeline ...

為什么它不起作用? 我在文檔中沒有找到這個,我需要以某種方式創建 /dev/video10 嗎?

我對默認設備 /dev/video1 做了同樣的事情,但它是我筆記本電腦上的輸入攝像頭設備:

sudo gst-launch-1.0 videotestsrc ! v4l2sink 
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0: Device '/dev/video1' is not a output device.
Additional debug info:
v4l2_calls.c(639): gst_v4l2_open (): /GstPipeline:pipeline0/GstV4l2Sink:v4l2sink0:
Capabilities: 0x4a00000
Setting pipeline to NULL ...
Freeing pipeline ...

預先感謝。

您的問題標題表明您想寫入虛擬視頻設備。 v4l2 設備既可以是輸入視頻設備,也可以是輸出視頻設備。 您的相機是視頻輸入(捕獲)設備。 在 gstreamer 中引導 v4l2sink(因此是管道的端點)可能會失敗。

但是,您可以生成虛擬輸出設備。 您正在尋找的是類似於v4l2-loopback設備的東西。 它允許您像這樣生成一個虛擬的/dev/video10設備:

modprobe v4l2loopback video_nr=10

相同錯誤消息的另一種可能解決方案:重新創建 v4l2loopback 接口:

sudo rmmod -f v4l2loopback
sudo modprobe v4l2loopback

這可能適用於遇到來自原始問題的錯誤消息的其他人,已經知道他們需要 v4l2loopback 設備作為 gstreamer 接收器。

嘗試將視頻流式傳輸到我之前使用 ffmpeg 流式傳輸的現有 v4l2loopback 設備時,我收到了相同的錯誤消息

設備“/dev/video0”不是輸出設備。

調查

使用diff將工作環回視頻設備和非工作環回視頻設備的狀態(即在使用 ffmpeg 寫入后)與v4l2-ctl --all -d 0進行diff ,我發現了以下差異:

--- working     2020-11-19 18:03:52.499440518 +0100
+++ non-working 2020-11-19 18:03:57.472802868 +0100
@@ -3,21 +3,18 @@
         Card type        : GPhoto2 Webcam
         Bus info         : platform:v4l2loopback-000
         Driver version   : 5.9.8
-        Capabilities     : 0x85208002
-                Video Output
+        Capabilities     : 0x85208000
                 Video Memory-to-Memory
                 Read/Write
                 Streaming
                 Extended Pix Format
                 Device Capabilities
-        Device Caps      : 0x05208002
-                Video Output
+        Device Caps      : 0x05208000
                 Video Memory-to-Memory
                 Read/Write
                 Streaming
                 Extended Pix Format
 Priority: 0
-Video output: 0 (loopback in)
 Format Video Output:
         Width/Height      : 960/640
         Pixel Format      : 'YU12' (Planar YUV 4:2:0)

不知何故,gstreamer 需要“視頻輸出”功能才能成功工作並被我之前的 ffmpeg 調用帶走。 該行為僅在我使用exclusive_caps=1選項加​​載 v4l2loopback 模塊時發生,請參閱1

解決方案是卸載/加載 v4l2loopback 內核命令,強行刪除 v4l2loopback 內核模塊並使用 rmmod / modprobe(見上文)再次添加它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM