我正在使用raspivid和netcat将一个视频从RaspberryPi Zero流式传输到我的PC:
raspivid -t 0 -n -w 320 -h 240 -hf -fps 30 -o - | nc PC_IP PORT
现在我想逐帧分析这个树莓派上的视频以进行对象检测。树莓派必须对对象检测做出反应,因此我必须在实时流视频的同时在Pi上进行分析。
我的想法是使用
tee
命令创建一个命名管道,并在Python程序中读取此命名管道以获取每一帧:mkfifo streampipe
raspivid -t 0 -n -w 320 -h 240 -hf -fps 30-o - | tee nc PC_IP PORT | streampipe
但是这并没有起作用,它显示sh1: 1: streampipe: not found
我的Python程序如下所示:
import subprocess as sp
import numpy
FFMPEG_BIN = "ffmpeg"
command = [ FFMPEG_BIN,
'-i', 'streampipe', # streampipe is the named pipe
'-pix_fmt', 'bgr24',
'-vcodec', 'rawvideo',
'-an','-sn', # we want to disable audio processing (there is no audio)
'-f', 'image2pipe', '-']
pipe = sp.Popen(command, stdout = sp.PIPE, bufsize=10**8)
while True:
# Capture frame-by-frame
raw_image = pipe.stdout.read(640*480*3)
# transform the byte read into a numpy array
image = numpy.fromstring(raw_image, dtype='uint8')
image = image.reshape((480,640,3)) # Notice how height is specified first and then width
if image is not None:
analyse(image)...
pipe.stdout.flush()
有人知道如何做到这一点吗?
感谢您的回答。
raspivid ....... | sudo tee /tmp/streampipe | sudo nc PC_IP PORT
,但它具有很高的延迟,并且仅适用于10fps视频流。 - Tomnc -l PORT | mplayer -vf mirror -fps 30 -demuxer h264es -
,那么我该如何为流添加更多的压缩? - Tom