将视频流推送到另一台计算机

时间:2017-10-24 16:37:08

标签: linux python-3.x rtsp

我已收到摄像机视频并成功处理了视频(使用tensorflow在对象上勾画了框)。我想将已处理的视频重新传输到我的客户端计算机,以便我可以在客户端实时显示已处理的视频。

我google了很多但找不到解决方案。我正在使用python进行编程,在Linux中是否有任何用于RTSP的库,我可以在python3中导入。或者可以将视频流式传输到另一台机器的任何其他协议。

1 个答案:

答案 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