FFMPEG:结合“从图像创建视频”+ 缩放到 x + 添加音频 + 覆盖徽标

Posted

技术标签:

【中文标题】FFMPEG:结合“从图像创建视频”+ 缩放到 x + 添加音频 + 覆盖徽标【英文标题】:FFMPEG: Combine "Create video from images" + scale to x + add audio + overlay logo 【发布时间】:2020-01-07 17:02:40 【问题描述】:

我正在开发一个网络摄像头项目。它用于生成日落/日落的延时视频。

我正在使用 raspberrypi 通过 gphoto2 + DSLR 生成它们。

在一天结束时,图像应该会变成带有音频和叠加徽标的视频。 它应该缩放到 1920 像素。 我得到了一个很好的解决方案,它奏效了。

    按比例制作延时视频:

    ffmpeg -y -framerate 25 -start_number 0000001 -i /var/www/html/webcam/2020-01-05_bilder/%7d.jpg -vf scale=1920:-1 -pix_fmt yuv420p /var/www/html/webcam/2020-01-05-tag-output-1920.mp4

    取(1)的输出并添加一个overlay-logo,添加音频

    ffmpeg -y -i '/var/www/html/webcam/2020-01-05-tag-output-1920.mp4' -i '/var/www/html/webcam-scripts/graphics/logo.png' -i '/var/www/html/webcam-scripts/sounds/chill_time_5.mp3' -shortest -filter_complex '[1][0]scale2ref=h=ow/mdar:w=iw/6[#A logo][liebfrauen]; [#A logo]format=argb,colorchannelmixer=aa=0.95[#B logo transparent]; [liebfrauen][#B logo transparent] overlay=(main_w-w)-(main_w*0.05):(main_h-h)-(main_h*0.01)' -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a aac -strict -2 '/var/www/html/webcam/2020-01-05-tag-1920.mp4

我尝试将这两个操作结合起来,但出现错误:

ffmpeg -y -framerate 25 -start_number 0000001 -i '/var/www/html/webcam/2020-01-05_bilder/%7d.jpg' -vf scale=1920:-1 -pix_fmt yuv420p -i '/var/www/html/webcam-scripts/graphics/logo.png' -i '/var/www/html/webcam-scripts/sounds/chill_time_5.mp3' -shortest -filter_complex '[1][0]scale2ref=h=ow/mdar:w=iw/6[#A logo][liebfrauen]; [#A logo]format=argb,colorchannelmixer=aa=0.95[#B logo transparent]; [liebfrauen][#B logo transparent] overlay=(main_w-w)-(main_w*0.05):(main_h-h)-(main_h*0.01)' -c:v libx264 -crf 18 -preset slow -pix_fmt yuv420p -c:a aac -strict -2 '/var/www/html/webcam/2020-01-05-tag-1920.mp4'

错误:Filtergraph 'scale=720:-1' 是通过 -vf/-af/-filter 选项为输出流 0:0 指定的,该输出流是从复杂的 filtergraph 馈送的。 -vf/-af/-filter 和 -filter_complex 不能同时用于同一个流。

难道不能结合这些输入并对其进行扩展吗?或者……我的误会在哪里?

【问题讨论】:

【参考方案1】:

不要混用 -vf-filter_complex。在一个filtergraph 中完成所有过滤。

ffmpeg -y -framerate 25 -i '/var/www/html/webcam/2020-01-05_bilder/%7d.jpg' -i '/var/www/html/webcam-scripts/graphics/logo.png' -i '/var/www/html/webcam-scripts/sounds/chill_time_5.mp3' -filter_complex '[0]scale=1920:-2[v0];[1][v0]scale2ref=h=ow/mdar:w=iw/6[#A logo][liebfrauen]; [#A logo]format=argb,colorchannelmixer=aa=0.95[#B logo transparent]; [liebfrauen][#B logo transparent] overlay=(main_w-w)-(main_w*0.05):(main_h-h)-(main_h*0.01),format=yuv420p' -c:v libx264 -crf 18 -preset slow -c:a aac -shortest '/var/www/html/webcam/2020-01-05-tag-1920.mp4'
不需要-strict -2。它对现代 ffmpeg 没有任何作用。 我将-pix_fmt yuv420p 替换为format=yuv420p,这样它更有条理。 不需要-start_number 0000001,因为1 是默认值。

【讨论】:

感谢伊洛根!现在我明白我的错误了!它工作得很好!伟大的。感谢您的帮助并在我的 raspi an co2 上节省 cpu 时间。

以上是关于FFMPEG:结合“从图像创建视频”+ 缩放到 x + 添加音频 + 覆盖徽标的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 php 从图像创建视频?

FFMPEG 图像到视频缩放起始位置

ffmpeg图片缩放

在 C# 中使用 AForge.Video.FFMPEG 向图像添加文本

为啥使用 FFmpeg 缩放时帧数会发生变化?

Libavformat- 将图像对象传递给 libavformat 以生成视频