我已收到摄像机视频并成功处理了视频(使用tensorflow在对象上勾画了框)。我想将已处理的视频重新传输到我的客户端计算机,以便我可以在客户端实时显示已处理的视频。
我google了很多但找不到解决方案。我正在使用python进行编程,在Linux中是否有任何用于RTSP的库,我可以在python3中导入。或者可以将视频流式传输到另一台机器的任何其他协议。
答案 0 :(得分:0)
谢谢Anthony我尝试了Ffmpeg,为此安装了pip3安装python-ffmpeg用于Python3依赖。
command = [FFMPEG_BIN,
'-y',
'-f', 'rawvideo',
'-vcodec', 'rawvideo',
'-s', dimension,
'-pix_fmt', 'bgr24',
'-r', '24',
'-i', '-',
'-an',
'-tune', 'zerolatency',
'-preset', 'ultrafast',
'-crf', '0',
'-b:v', '2000k',
'-qmin', '1',
'-qmax', '4',
'-qscale', '4',
'-vcodec', 'rawvideo',
feed]
self.proc = sp.Popen(command, stdout=sp.PIPE, stderr=None, stdin=sp.PIPE)
while True:
ret, frame = self.cap.read()
#some analysis done here
if ret:
self.proc.stdin.write(frame.tostring())
输出vcodec可以是任何类型。
要实现这一点,请在/etc/ffserver.conf中创建ffserver.conf文件,如下所示 -
HTTPPort 1234
RTSPPort 1235
MaxClients 1000
MaxBandwidth 10000
<Feed feed1.ffm>
File /tmp/feed1.ffm
ACL allow 127.0.0.1
</Feed>
<Stream test1.sdp>
NoDefaults
Feed feed1.ffm
Format rtp
Noaudio
VideoCodec libx264
VideoSize 1920x1080
#VideoHighQuality
VideoBitRate 64
VideoFrameRate 17
VideoGopSize 25
VideoBufferSize 50000
AVOptionVideo flags +global_header
AVOptionVideo me_range 16
AVOptionVideo qdiff 4
AVOptionVideo qmin 30
AVOptionVideo qmax 34
ACL allow 192.168.0.0 192.168.255.255
PreRoll 0
</Stream>
运行ffserver