video - 使用 ffmpeg 更新视频上的 PNG 叠加层

标签 video ffmpeg overlay

我正在尝试制作视频的 RTMP 流并在上面放一些图形数据。我有一个命令可以创建我需要的输出。唯一的问题是,尽管 PNG 图像在渲染过程中会在磁盘上更新,但在输出视频中,覆盖始终保持不变。我希望 ffmpeg 在每次更改时(或大约每分钟一次)从磁盘中获取 PNG 图像并将其用作叠加层。 这可能吗?

这是我用来呈现输出的命令:

ffmpeg \
-re -y \
-f lavfi \
-i "movie=filename=video/videobg.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" \
-loop 1 \
-i images/forecast.png \
-filter_complex "[1:v]format=argb,geq=r='r(X,Y)':a='0.9*alpha(X,Y)'[overlay]; [0:v][overlay]overlay" \
-i data/musicbg.mp3 \
-ac 1 \
-ar 44100 \
-b:a 128k \
-vcodec libx264 \
-pix_fmt yuv420p \
-r 30 \
-g 60 \
output.mp4

最佳答案

好吧,我终于想出了如何制作我想要的东西。希望这对其他人有用。

我唯一需要做的就是为图像输入添加一个 -f image2 选项。该命令与我上面发布的命令有点不同,因为我更改了输入源的顺序,但实际上是一样的。 这是解决方案:

ffmpeg \
-re -y \
-loop 1 \
-f image2 \
-i images/forecast.png \
-f lavfi \
-i "movie=filename=video/videobg.mp4:loop=0, setpts=N/(FRAME_RATE*TB)" \
-filter_complex "[0:v]format=argb,geq=r='r(X,Y)':a='0.9*alpha(X,Y)'[overlay]; [1:v][overlay]overlay" \
-i data/musicbg.mp3 \
-ac 1 \
-ar 44100 \
-b:a 128k \
-vcodec libx264 \
-pix_fmt yuv420p \
-r 30 \
-g 60 \
output.mp4

关于video - 使用 ffmpeg 更新视频上的 PNG 叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132358/

相关文章:

html - 如何隐藏现有的D3图表并渲染新图表?

java - 免安装应用上的叠加权限

javascript - 视频无法在 Html 中自动播放

javascript - 如何在全屏模式下自定义视频播放器并在全屏打开时向下滚动

ios - 将图像数组转换为 MP4 文件时遇到问题

ffmpeg - 强制 FFMPEG 重用 gif 帧

jquery - 创建叠加层以发送消息

css - 如何在一个部分添加视频背景?

ffmpeg .264 视频转换为 jpg

qt - FFMpeg - 切片 QT 视频的问题