我尝试将视频从覆盆子(pi A)流式传输到另一个覆盆子(pi B)
我使用mjpg-streamer来传输视频。 Mjpg-streamer有2种格式的视频:yuv,mjpeg 我在树莓上使用omxplayer来播放流(因为它使用gpu)
我找到了一个在omxplayer上播放流的解决方案 在:http://www.raspberrypi.org/forums/viewtopic.php?f=63&t=33473
是使用管道
第1步:pi A创建流
第2步:pi B创建管道并播放
mkfifo /tmp/stream.mjpeg
wget -O /tmp/stream.mjpeg http://address_ip_b:8080/?action=stream &> /dev/null &
omxplayer -r --live /tmp/stream.mjpeg
但是,我已经尝试了很多次,我意识到了
案例1:
pi A:YUV格式的流
pi B:
mkfifo /tmp/stream.mjpeg
wget -O /tmp/stream.mjpeg http://address_ip_b:8080/?action=stream &> /dev/null &
omxplayer -r --live /tmp/stream.mjpeg
结果:它有效
案例2:不使用管道
pi A:YUV格式的流
pi B:
wget -O stream.mjpeg http://address_ip_b:8080/?action=stream
我等了1'然后按ctrl + c并获取一个文件,然后我播放它
omxplayer stream.mjpeg
结果:它有效
**注意:以上所有案例都有效。但是,使用格式YUV无效,因为pi A必须在流之前将YUV转换为MPJEG,因此它使用更多的CPU> 70%(不是GPU)。如果我使用更多相机,那么我可能会挂**
案例3:
pi A:采用MJPEG格式的流
pi B:
mkfifo /tmp/stream.mjpeg
wget -O /tmp/stream.mjpeg http://address_ip_b:8080/?action=stream &> /dev/null &
omxplayer -r --live /tmp/stream.mjpeg
结果:它无效
案例4:不使用管道
pi A:采用MJPEG格式的流
pi B:
wget -O stream.mjpeg http://address_ip_b:8080/?action=stream
我等了1'然后按ctrl + c并获取一个文件,然后我播放它
omxplayer stream.mjpeg
结果:它无效
注意:以上2个案例没有奏效。我相信使用格式MJPEG有效,因为它不必转换。
任何人都有这方面的经验,你能给我建议吗?
抱歉我的英语不好。
答案 0 :(得分:0)
我在我的pi rev上安装了一个新鲜的raspbian。 B使用omxplayer 0.3.6~git20150210~337004e并使用内核3.18的补丁从svn rev:3.172M编译mjpg流光。
有了这个我可以运行
mjpg_streamer \
-i "/usr/local/lib/input_uvc.so -d /dev/video0 -n -r 800x600 -f 15" \
-o "/usr/local/lib/output_http.so -n -w /usr/local/www -p 8080"
并使用omxplayer
直接在我的控制台上显示结果omxplayer -r --live -b 'http://picam.my.home:8080/?action=stream'
mjpg_streamer在我的Pi-B上占用<10%的CPU负载,omxplayer占用<20%