我有一个Raspberry Pi,新的相机模块连接到(在这种情况下)Bambuser。 You can see the stream here,它来自荷兰的风车(相机位置会在几周内更好)。
我成功运行了流,但现在我想在输入流的顶部添加一个图像(alpha透明png),该输入流通过管道传输到ffmpeg以便流式传输到Bambuser。
我目前使用以下命令(用户特定的详细信息已删除)成功地将来自Raspberry Camera模块的输入(很棒,HD和所有硬件渲染)传输到Bambuser,遵循Slickstreamer的great tutorial :
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 microseconds Input #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 tbc Output #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 tbc Stream 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上的输出流,我认为我从根本上做错了。
非常感谢你提前的想法。
答案 0 :(得分:3)
如果您要使用过滤器,则必须重新编码,因此如果您还尝试使用-vf
/ -vcodec copy
/ -codec:v copy
复制流,ffmpeg将忽略-c:v copy
。来自stream copy文档:
由于没有解码或编码,因此流复制模式非常快 而且没有质量损失。但是,在某些情况下可能不起作用 因为很多因素。显然也应用过滤器 不可能,因为过滤器处理未压缩的数据。
其他东西:
-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进行编码,我认为这不会带来令人满意的性能。