lipku / python_rtmpstream

python库,实现推送实时rtmp音视频流
MIT License
68 stars 20 forks source link

请教:如何推送batch的inference结果呢? #10

Open hzx829 opened 5 months ago

hzx829 commented 5 months ago

老师您好,您在metahuman-stream的项目中,nerf的render结果是一张张出的。但例如像我在使用的tensorrt,inference结果是一次性出一个batch,例如16/32/64张图。

def render():
    fps = 25
    duration_per_frame = int(1.0 / fps * 1000)
    outputs = batch_infer()
    for output in outputs:
        streamer.stream_frame_with_duration(output, duration_per_frame)

我尝试使用Streamer.stream_frame_with_duration来一张张推,但似乎这样会让延时变得非常高。

hzx829 commented 5 months ago

另外,在srs的docker中,如果想要在网页端更快地接收到流,是否可以rtmp2rtc.conf来使用WebRTC推流?

lipku commented 5 months ago

需要创建多个streamer。 rtc你可以测试一下看看,没试过

hzx829 commented 5 months ago

类似这样吗?

streamer_list = []
for _ in range(batch_size):
    streamer_list.append(create_new_streamer())
def render():
    fps = 25
    duration_per_frame = int(1.0 / fps * 1000)
    outputs = batch_infer()
    for i, output in enumerate(outputs):
        streamer_list[i].stream_frame_with_duration(output, duration_per_frame)

但我这么使用多个streamer后,srs中会出现server busy的报错,flv也无法播放。

lipku commented 5 months ago

每个streamer是不同的推流地址。 另外用stream_frame函数

hzx829 commented 5 months ago

那我可能表达得不太准确,一个batch里面的图片是一段video sequence,推往同一个地址。