gpt4 book ai didi

ffmpeg - 我应该如何使用 ffmpeg 在 RTMP h264 流上添加透明的 watermark.png?

转载 作者:行者123 更新时间:2023-12-01 17:43:25 27 4
gpt4 key购买 nike

我有一个 Raspberry Pi,其新相机模块连接到(在本例中)Bambuser。 You can see the stream here ,来自荷兰的风车(几周后相机位置会更好)。

我成功地运行了流,但现在我想在输入流顶部添加一个图像(alpha 透明 png),该图像通过管道传输到 ffmpeg 以流式传输到 Bambuser。

我目前使用以下命令(删除了用户特定的详细信息)成功地将输入从 Raspberry Camera 模块(很棒,高清和所有硬件渲染)传输到 Bambuser,遵循 great tutorial作者:Slickstreamer:

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg  -i - -vcodec copy -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X

我遵循了有关 ffmpeg 的文档,在我看来,我应该使用“-vf”命令来应用“movies:”过滤器,如下所示:

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg  -i - -vf "movie='/home/USER/watermark.png' [logo]; [in][logo] overlay=main_w-overlay_w-10:10 [out]" -vcodec copy -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X

以及各种其他 -vf 命令,例如“-vf vflip”或“-vf mandelbrot”。但它似乎不起作用,因为流只显示来自 Raspberry Camera 的直接输入。

这是使用以下 -vf 命令启动时的输出:

raspivid -t 999999999 -w 960 -h 540 -fps 25 -b 500000 -o - | ffmpeg -i - -vcodec copy -vf 'movie=0:png:/home/USER/watermark.png [watermark];[in] [watermark]overlay=0:0:1[out]' -an -metadata title="STREAM NAME" -f flv rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X
ffmpeg version N-54036-g6c4516d Copyright (c) 2000-2013 the FFmpeg developers  built on Jun 15 2013 XX:XX with gcc 4.6 (Debian 4.6.3-14+rpi1)  configuration:   libavutil      52. 35.101 / 52. 35.101  libavcodec     55. 16.100 / 55. 16.100  libavformat    55.  8.102 / 55.  8.102  libavdevice    55.  2.100 / 55.  2.100  libavfilter     3. 77.101 /  3. 77.101  libswscale      2.  3.100 /  2.  3.100  libswresample   0. 17.102 /  0. 17.102[h264 @ 0x1917cc0] max_analyze_duration 5000000 reached at 5000000 microsecondsInput #0, h264, from 'pipe:':  Duration: N/A, bitrate: N/A    Stream #0:0: Video: h264 (High), yuv420p, 960x540, 25 fps, 25 tbr, 1200k tbn, 50 tbcOutput #0, flv, to 'rtmp://USER_X.fme.bambuser.com/b-fme/USER_STREAM_KEY_X':  Metadata:    title           : STREAM NAME    encoder         : Lavf55.8.102    Stream #0:0: Video: h264 ([7][0][0][0] / 0x0007), yuv420p, 960x540, q=2-31, 25 fps, 1k tbn, 1200k tbcStream mapping:  Stream #0:0 -> #0:0 (copy)frame= 2344 fps= 27 q=-1.0 size=    4827kB time=00:01:33.72 bitrate= 421.9kbits/s 

如上所述,其他 -vf 过滤器似乎也不适用于 Bambuser 上的输出流,我认为我从根本上在这里做错了。

  1. 我应该映射 Raspivid 流并在其上映射图像“watermark.png”吗?这就是解决方案吗?有人有这方面的经验吗?

非常感谢您提前提出的想法。

最佳答案

如果你想使用过滤器,你必须重新编码,所以ffmpeg会忽略-vf如果您还尝试使用 -vcodec copy 复制流/-codec:v copy/-c:v copy 。来自 stream copy文档:

Since there is no decoding or encoding, stream copy mode is very fast and there is no quality loss. However, it might not work in some cases because of many factors. Applying filters is obviously also impossible, since filters work on uncompressed data.

其他东西:
-vf用于simple filtergraphs (一输入,一输出),以及 -filter_complex用于complex filtergraphs (一个或多个输入,一个或多个输出)。 -filter_complex的使用意味着您可以跳过 movie 多媒体源过滤器,这意味着更短、更清晰的命令。

示例:

ffmpeg -i video.mp4 -i image.png -codec:v libx264 -preset ultrafast -filter_complex overlay output

这将使用 Raspberry 的 CPU 进行编码,我猜这不会产生令人满意的性能。

关于ffmpeg - 我应该如何使用 ffmpeg 在 RTMP h264 流上添加透明的 watermark.png?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17135973/

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