video-streaming - 如何通过 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 字节信息。
谢谢!手臂
解决方案
推荐阅读
- sql - 如何在 pl SQL 中将列值设置为列名,但我不知道列值是什么?
- telegraf - Debian 安装 telegraf 数据混乱
- javascript - 如何将 v-model 与 Vue 3 组合 API 一起使用?
- r - 对于新的“ggproto”,需要使用“extra_params”指定哪些参数
- java - 如何在执行前验证 Spark 表达式语法
- javascript - 角度切换按钮逻辑
- php - laravel 8 图像验证无法正常工作
- bash - Bash:进程块 b/c 读取循环有时无法从文件描述符中读取更多数据,但手动 cat /proc/
/fd/ 能够 - azure - 从门户部署逻辑应用时无法在存储帐户中创建文件共享
- c# - 如何检测媒体中的特定图片是否被任何页面使用