首页 文章

在树莓派上使用动作进行网络摄像头流媒体问题

提问于
浏览
7

我有一个USB网络摄像头(未知的制作,没有标记)在我的Raspberry Pi上检测不到 .

这是lsusb的输出

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp. 
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. 
Bus 001 Device 004: ID 0c45:608f Microdia PC Camera (SN9C103 + OV7630)
Bus 001 Device 005: ID 1267:0103 Logic3 / SpectraVideo plc G-720 Keyboard

但是当我运行动作时,使用/ dev / video0和唯一的默认配置会改变分辨率并关闭网络摄像头主机,以便我可以在网络上传输它 . 这是我运行动作时的日志

Log of motion -n 

[0] Processing thread 0 - config file /etc/motion/motion.conf
[0] Motion 3.2.12 Started
[0] ffmpeg LIBAVCODEC_BUILD 3482368 LIBAVFORMAT_BUILD 3478784
[0] Thread 1 is from /etc/motion/motion.conf
[0] motion-httpd/3.2.12 running, accepting connections
[0] motion-httpd: waiting for data on port TCP 8080
[1] Thread 1 started
[1] cap.driver: "sonixb"
[1] cap.card: "USB camera"
[1] cap.bus_info: "usb-bcm2708_usb-1.2"
[1] cap.capabilities=0x05000001
[1] - VIDEO_CAPTURE
[1] - READWRITE
[1] - STREAMING
[1] Config palette index 8 (YU12) doesn't work.
[1] Supported palettes:
[1] 0: S910 (S910)
[1] 1: BA81 (BA81)
[1] Selected palette BA81
[1] Test palette BA81 (480x640)
[1] Adjusting resolution from 480x640 to 160x120.
[1] Using palette BA81 (160x120) bytesperlines 160 sizeimage 19200 colorspace 00000008
[1] found control 0x00980900, "Brightness", range 0,255 
[1]     "Brightness", default 127, current 127
[1] found control 0x00980911, "Exposure", range 0,1023 
[1]     "Exposure", default 66, current 66
[1] found control 0x00980912, "Automatic Gain (and Exposure)", range 0,1 
[1]     "Automatic Gain (and Exposure)", default 1, current 1
[1] found control 0x00980913, "Gain", range 0,255 
[1]     "Gain", default 127, current 127
[1] mmap information:
[1] frames=4
[1] 0 length=20480
[1] 1 length=20480
[1] 2 length=20480
[1] 3 length=20480
[1] Using V4L2
[1] Resizing pre_capture buffer to 1 items
[1] v4l2_next: VIDIOC_DQBUF: EIO (s->pframe 0): Input/output error
[1] v4l2_next: VIDIOC_QBUF: Invalid argument
[1] v4l2_next: VIDIOC_QBUF: Invalid argument
[1] v4l2_next: VIDIOC_QBUF: Invalid argument
[1] v4l2_next: VIDIOC_QBUF: Invalid argument
[1] Error capturing first image
[1] Started stream webcam server in port 8081
[1] v4l2_next: VIDIOC_QBUF: Invalid argument
[1] Video device fatal error - Closing video device
[1] Closing video device /dev/video0
[1] Retrying until successful connection with camera
[1] cap.driver: "sonixb"
[1] cap.card: "USB camera"
[1] cap.bus_info: "usb-bcm2708_usb-1.2"
[1] cap.capabilities=0x05000001
[1] - VIDEO_CAPTURE
[1] - READWRITE
[1] - STREAMING
[1] Config palette index 8 (YU12) doesn't work.
[1] Supported palettes:
[1] 0: S910 (S910)
[1] 1: BA81 (BA81)
[1] Selected palette BA81
[1] Test palette BA81 (480x640)
[1] Adjusting resolution from 480x640 to 160x120.
[1] Using palette BA81 (160x120) bytesperlines 160 sizeimage 19200 colorspace 00000008
[1] found control 0x00980900, "Brightness", range 0,255 
[1]     "Brightness", default 127, current 127
[1] found control 0x00980911, "Exposure", range 0,1023 
[1]     "Exposure", default 66, current 66
[1] found control 0x00980912, "Automatic Gain (and Exposure)", range 0,1 
[1]     "Automatic Gain (and Exposure)", default 1, current 1
[1] found control 0x00980913, "Gain", range 0,255 
[1]     "Gain", default 127, current 127
[1] mmap information:
[1] frames=4
[1] 0 length=20480
[1] 1 length=20480
[1] 2 length=20480
[1] 3 length=20480
[1] Using V4L2
[1] Camera has finally become available
[1] Camera image has different width and height from what is in the config file. You should fix that
[1] Restarting Motion thread to reinitialize all image buffers to new picture dimensions
[1] Thread exiting
[1] Calling vid_close() from motion_cleanup
[1] Closing video device /dev/video0
[0] Motion thread 1 restart
[1] Thread 1 started
[1] config image height (120) is not modulo 16
[1] Could not fetch initial image from camera
[1] Motion continues using width and height from config file(s)
[1] Resizing pre_capture buffer to 1 items
[1] Started stream webcam server in port 8081
[1] Retrying until successful connection with camera
[1] config image height (120) is not modulo 16
[0] httpd - Finishing
[0] httpd Closing
[0] httpd thread exit
[1] Thread exiting
[0] Motion terminating

相机上的指示灯在开始时亮起然后再次熄灭,是否有人认出我遇到的任何错误?

谢谢!

5 回答

  • 1

    我认为您需要将conf文件中图像的高度和宽度设置为相机规格 . 我没有工作,直到我设置640宽度480.流量很棒!只需要找出网络流认证的补丁 . 目前我有这个流媒体到我的网络服务器需要登录,但如果有人输入我的IP加上端口即时通讯,这可以被绕过 .

  • 1

    即使在conf文件中配置不同,运动也会使用它在运行时检测到的可能分辨率(至少根据我的经验) .

    此外,似乎在conf文件中设置了不支持的调色板,并且动作选择其检测到的两个中的一个支持 . 您是否尝试在conf文件中将调色板设置更改为"0"(S910)?

    最后,Pi的USB支持有一些已知的,现在尚未解决的大块数据问题 . 降低帧率也可能有助于其他情况(在这种情况下,我认为,我没有帮助,因为该过程已经失败了第一张图像) .

  • 0

    尝试使用 v2l4-ctl --list-format-ext 查看相机支持的像素格式和图像尺寸组合 . S910 是一个便宜的旧相机,你可能想要升级 .

  • 1

    您的问题出在日志中:

    config image height (120) is not modulo 16
    

    所以你需要一个不同的图像分辨率 .

    查看您的设备支持的功能

    $ uvcdynctrl -f
    

    选择y分辨率为16的倍数的一个 . 如果为您的相机列出了那个,则为640x480 .

  • 1

    我建议你试试guvcview而不是动作 . 它运行得更快,并且在我的Pi上提供了更好的图像 . 它在X下运行 .

    guvcview的两个注释 - 将POWER LINE FREQUENCY设置为您当地的主电源频率 . - 将分辨率设置为640 x 480 .

    guvcview占用大约50%的处理器能力 . 是的,也可以使用USB集线器!

    UNH .

相关问题