2

我目前正在一个项目中工作,我必须通过 TCP 连接将 2 个网络摄像头流从一台计算机流式传输到另一台计算机,我可以毫无问题地流式传输 1:

使用

ffserver.conf:

            HTTPPort 8090
            HTTPBindAddress 0.0.0.0
            MaxClients 40
            MaxBandwidth 30000

            CustomLog -
            NoDaemon

            <Stream status.html>
            Format status
            ACL allow localhost
            ACL allow 192.168.0.0 192.168.255.255
            </Stream>

           #feed for camera 1
           <Feed webcam1.ffm>
           File /tmp/webcam1.ffm
           FileMaxSize 100M
           </Feed>

           #feed for camera 2
           <Feed webcam2.ffm>
           File /tmp/webcam2.ffm
           FileMaxSize 100M
           </Feed>

          #stream for feed 1
          <Stream webcam1.mjpeg>
          Feed webcam1.ffm
          Format mjpeg
          VideoSize 1280x720
          VideoFrameRate 30
          Preroll 0
          NoAudio
          Strict -1
          </Stream>

          #stream for feed2
          <Stream webcam2.mjpeg>
          Feed webcam2.ffm
          Format mjpeg
          VideoSize 1280x720
          VideoFrameRate 30
          Preroll 0
          NoAudio
          Strict -1
          </Stream>

运行ffserver的命令:

          ffserver /etc/ffserver.conf

提供 ffserver 的命令:

         ffmpeg -v 2 -r 20 -f video4linux2 -i /dev/video0 http://localhost:8090/webcam1.ffm

并且效果很好,但是当我尝试运行其他提要时:

         ffmpeg -v 2 -r 20 -f video4linux2 -i /dev/video1 http://localhost:8090/webcam2.ffm

我只能看到第二个流,而第一个流不再起作用。一些想法?

4

1 回答 1

3

同时使用多个 USB 网络摄像头可能会使总线饱和。这似乎是您的情况,因为启动第二台相机会切断第一个相机。

与 USB1.1 普及时相比,情况有所改善。大多数甚至低端的主板都有多个 USB2/3 控制器,它们完全独立,可以毫无顾虑地运行多个摄像头。USB2 可以支持多个低分辨率和帧率的摄像头。 发送未压缩图像的高帧率高分辨率摄像机仍可能使总线饱和

资源

可能的解决方案:

  1. 切换到 MJPEG 输入(使用较低的带宽)

检查设备的功能:

ffmpeg -f v4l2 -list_formats all -i /dev/video0

如果它支持 MJPEG,则使用它而不是原始视频:

ffplay -f v4l2 -input_format mjpeg -i /dev/video0 ...

  1. 为第二个摄像头使用不同的 USB 控制器

如果主板没有多个控制器,那么请使用 PCI USB 卡。

于 2015-04-30T20:11:52.137 回答