首页 > 解决方案 > 如何通过 RTMP 协议同步两个视频流?

问题描述

我有一台IP摄像机,每次处理OpenCV捕获的一帧并输出两张图片。然后我同时通过不同的rtmp地址对这两张图片进行流式传输,例如一个是“rtmp://ip:port/live/stream1”,另一个是“rtmp://ip:port/live/stream2”。从服务器端,我通过 PyAV 拉出这两个流

import os
import av
from multiprocessing import Pool

# change src for your need
src_dict = {
    'background' :  "rtmp://ip:port/live/stream1",
    'feature' : "rtmp://ip:port/live/stream2"
}

def frame_process(src):
    container = av.open(src_dict[src], 'r')
    stream = container.streams.video[0]
    print(stream.time_base)
    for frame in container.decode(stream):
        frame.to_image().save(src + '-frame-%04d.jpg' % frame.index)

if __name__=='__main__':
    print('Parent process %s.' % os.getpid())
    p = Pool(2)
    for i in ['background', 'feature']:   
        p.apply_async(frame_process, args=(i,))
    p.close()
    p.join()
    print('Child process end.')

我需要同步这两个流“背景”和“特征”,以便来自两个流的图片来自我上面描述的一张原始图片。然后融合这两张图片。

有人可以提出一些建议,我如何同步这两个流?Anotehr 问题是我可以在流式传输视频时向 RTMP 协议添加一些附加信息,例如用于融合两个图像的 16 字节信息。

谢谢!手臂

标签: video-streamingrtmppyav

解决方案


推荐阅读