我目前正在一个项目中工作,在这个项目中,我必须通过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我只能看到第二条流和第一条不再工作了。什么主意?
发布于 2015-04-30 20:11:52
同时使用多个USB摄像头可以使总线饱和。这似乎是你的情况,因为启动第二个相机切断了第一个。
这种情况已经从USB1.1很普遍的时候开始改善了。大多数甚至低端主板都有多个USB2 2/3控制器,这些控制器是完全独立的,可以运行多个摄像头而无需担心。USB2可以支持多个低分辨率和帧的相机。发送未压缩图像的高帧率高分辨率相机可能仍会使总线饱和。
来源
可能的解决办法:
检查设备的功能:
ffmpeg -f v4l2 -list_formats all -i /dev/video0
如果它支持MJPEG,那么使用它而不是原始视频:
ffplay -f v4l2 -input_format mjpeg -i /dev/video0 ...
如果主板不具有多个控制器,那么就获得一个PCI USB卡。
https://stackoverflow.com/questions/29928153
复制相似问题