如何强制ffmpeg更频繁地刷新叠加图像?

问题描述 投票:0回答:2

我正在尝试使用ffmpeg进行体育直播。正在从服务器获取流匹配的分数并转换为png。此png必须出现在视频的顶部。

ffmpeg允许使用image2 demuxer在视频流上叠加。如果我使用-loop1,则此叠加大约每5秒更新一次。如何强制ffmpeg更频繁地从磁盘读取它?

我目前尝试在5秒内完成叠加更新(mp4视频用于测试目的):

nice -n -19 ffmpeg \
        -re -y \
        -i s.mp4 \
        -f image2 -loop 1 -i http://127.0.0.1:3000/img \
        -filter_complex "[0:v][1:v]overlay" \
        -threads 4 \
        -v 0 -f mpegts -preset ultrafast udp://127.0.0.1:23000 \
        &

P.S我知道,我可以在网站上制作youtube流媒体小部件,并使用html / css / js将评分放在其上。但不幸的是,它必须直接在视频流中完成。

P.P.S我知道,我可以使用ffmpeg drawtext。但这不是我想要的。我有专门设计的png,必须尽可能频繁地更新(1-2秒内一次就会很棒)

ffmpeg video-streaming png overlay
2个回答
1
投票

三件事:

1)每个输入应用-re,因此ffm​​peg当前正以与视频异步的速率读取图像。由于视频是实时读取的,因此图像读取器将循环图像的数据包排队,直到滤波器图形可以消耗它们。因此,更新后的图像将消耗得更晚,并且分配的时间戳比实际更新时更长。在图像-re之前添加-i来纠正这个问题。

2)跳过-loop 1并使用-stream_loop -1,因为如果输入被阻止或者在尝试读取时由于更新而导致image2解复用器可以中止。虽然,由于输入是通过网络协议读取的,因此这对您来说可能不是问题。

3)您在输出选项中未指定编码器。由于格式为MPEG-TS,因此ffm​​peg将选择mpeg2video,默认比特率为200 kbps。 ultrafast预设不适用于此编码器。你可能想添加-c:v libx264


0
投票

我发现,将image2的帧速率值增加到90-100会使文件读取过程更快,但音频会受到限制

© www.soinside.com 2019 - 2024. All rights reserved.