gpt4 book ai didi

ffmpeg - 使用 ffmpeg 在另一个视频上叠加流式视频

转载 作者:行者123 更新时间:2023-12-04 23:08:32 33 4
gpt4 key购买 nike

我正在运行一个机器人,它使用 fmpeg 将 straming 视频发送到letsrobot.tv 你可以在名为 patton II 的网站上看到我的机器人。我想在流上叠加一个视频 HUD。

我有 found a link解释如何做到这一点,但是我不知道如何使用流视频作为输入而不是单个图像文件来做到这一点。

这是当前用于流式传输视频的命令:

overlayCommand = '-vf dynoverlay=overlayfile=/home/pi/runmyrobot/images/hud.png:check_interval=500'
videoCommandLine = '/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s %s -f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 -muxdelay 0.001 %s http://%s:%s/hello/640/480/' % (deviceAnswer, rotationOption, args.kbps, overlayCommand, server, videoPort)
audioCommandLine = '/usr/local/bin/ffmpeg -f alsa -ar 44100 -i hw:1 -ac 2 -f mpegts -codec:a mp2 -b:a 32k -muxdelay 0.001 http://%s:%s/hello/640/480/' % (server, audioPort)

最佳答案

您已经有一个输入,即网络摄像头视频:

-f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s

您想要覆盖另一个视频,因此您必须添加第二个输入,即您的 HUD 流。我假设您已经有一个动态生成的流:
-i /path/to/hud/stream

然后,添加一个覆盖另一个的复杂过滤器:
-filter_complex "[0:v][1:v]overlay[out]"

在过滤器之后,添加 -map "[out]"告诉 ffmpeg 使用生成的视频作为输出的选项,并像往常一样添加剩余的选项。所以,总而言之:
/usr/local/bin/ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video%s \
-i /path/to/hud/stream \
-filter_complex "[0:v][1:v]overlay[out]" -map "[out]" \
-f mpegts -codec:v mpeg1video -s 640x480 -b:v %dk -bf 0 \
-muxdelay 0.001 %s http://%s:%s/hello/640/480/

显然,在不了解更多信息的情况下,这是我能给你的最通用的建议。

一些一般提示:
  • 确保 HUD 流与网络摄像头视频的分辨率相同,其中元素放置在您想要的位置。或使用 overlay filter's xy移动 HUD 的选项。
  • 您的 HUD 流应该有一个透明层。并非所有编解码器和容器格式都支持这一点。
  • 您正在使用 -codec:v mpeg1video ,即 MPEG-1 视频。它非常节省资源,但质量却很低。您可能想要选择更好的编解码器,但这取决于您的设备功能(例如,至少带有 mpeg2 的 MPEG-2,或带有 mpeg4 的 MPEG-4 Part 10,或带有 libx264 的 H.264)。
  • 关于ffmpeg - 使用 ffmpeg 在另一个视频上叠加流式视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45583759/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com