具有静态图像背景的幻灯片

具有静态图像背景的幻灯片

我刚刚开始使用 FFMpeg,并尝试使用带有背景图像的图像创建视频幻灯片。背景不会改变,只有图像会改变。

类似如下:

在此处输入图片描述

我有以下内容

"ffmpeg -framerate 1/5 \
-start_number 1 \
-i "C:/test/%03d.jpg" \
-c:v libx264 \
-r 30 "C:/test/video.mp4"

这对于使用图片创建幻灯片非常有效,但是当我尝试使用以下命令(覆盖)为每张图片添加背景图像时。

"ffmpeg -framerate 1/5 \
-start_number 1 \
-i "C:/test/%03d.jpg" \
-vf 'movie=C:/test/bg.jpg [over], [in][over] overlay'
-c:v libx264 \
-r 30 "C:/test/video.mp4"

这是我的错误日志:

    ffmpeg version N-69587-g15a8846 Copyright (c) 2000-2015 the FFmpeg developers
  built with gcc 4.9.2 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-

    bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-decklink --enable-zlib
      libavutil      54. 18.100 / 54. 18.100
      libavcodec     56. 21.102 / 56. 21.102
      libavformat    56. 19.100 / 56. 19.100
      libavdevice    56.  4.100 / 56.  4.100
      libavfilter     5.  9.103 /  5.  9.103
      libswscale      3.  1.101 /  3.  1.101
      libswresample   1.  1.100 /  1.  1.100
      libpostproc    53.  3.100 / 53.  3.100
    Trailing options were found on the commandline.
    Input #0, image2, from 'C:/test/%03d.jpg':
      Duration: 00:00:15.00, start: 0.000000, bitrate: N/A
        Stream #0:0: Video: mjpeg, yuvj420p(pc, bt470bg/unknown/unknown), 768x1024 [SAR 1:1 DAR 3:4], 0.20 fps, 0.20 tbr, 0.20 tbn, 0.20 tbc
    At least one output file must be specified

答案更新:

<cfscript>
    try {
        runtime = createObject("java", "java.lang.Runtime").getRuntime();
        command = '#ffmpegPath#' &
        ' -loop 1' &
        ' -framerate 1' &
        ' -i "C:/test/bg.jpg"' & 
        ' -framerate 1/5 -start_number 1' &
        ' -i "C:/test/%03d.jpg"' & 
        ' -filter_complex "overlay=(W-w)/2:(H-h)/2,format=yuv420p"' &
        ' -c:v libx264' &
        ' -r 30' &
        ' -movflags +faststart' &
        ' -shortest' &
        ' "C:/test/out.mp4"'; 
        process = runtime.exec(#command#);
        results.errorLogSuccess = processStream(process.getErrorStream(), errorLog);
        results.resultLogSuccess = processStream(process.getInputStream(), resultLog);
        results.exitCode = process.waitFor();
    }
    catch(exception e) {
        results.status = e;    
    }
</cfscript>

答案1

具有静态图像背景的幻灯片

哈巴狗生活

您不需要使用movie源过滤器,-filter_complex而是使用-vf

ffmpeg \
-loop 1 \
-framerate 1 \
-i bg.jpg \
-framerate 1/5 \
-i "C:/test/%03d.jpg" \
-filter_complex "overlay=(W-w)/2:(H-h)/2:shortest=1,format=yuv420p" \
-c:v libx264 \
-r 30 \
-movflags +faststart \
output.mp4
  • format=yuv420p将确保广泛兼容的“像素格式”或色度子采样方案,这在使用时添加很有用libx264

  • -movflags +faststart编码完成后将重新定位部分数据,这样观众就可以在文件完全下载之前开始播放。例如,如果您自己托管文件并将其放在网站上,这将非常有用。

有音频

ffmpeg \
-loop 1 \
-framerate 1 \
-i bg.jpg \
-framerate 1/5 \
-i "C:/test/%03d.jpg" \
-i audio.mp3 \
-filter_complex "overlay=(W-w)/2:(H-h)/2:shortest=1,format=yuv420p" \
-c:v libx264 \
-r 30 \
-c:a aac -strict experimental \
-b:a 192k \
-movflags +faststart \
-shortest
output.mp4

带有文本

可以使用过滤器添加文本drawtext

ffmpeg \
-loop 1 \
-framerate 1 \
-i bg.jpg \
-framerate 1/5 \
-i "C:/test/%03d.jpg" \
-i audio.mp3 \
-filter_complex "overlay=(W-w)/2:(H-h)/2:shortest=1,drawtext=fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=10,format=yuv420p" \
-c:v libx264 \
-r 30 \
-c:a aac -strict experimental \
-b:a 192k \
-movflags +faststart \
-shortest \
output.mp4

查看drawtext过滤文档以获得更多选择。

有边框

drawbox筛选可用于在叠加图像周围绘制白色边框。请注意,我开始命名每个过滤器的输入和输出,然后使用 引用最终的过滤结果-map

ffmpeg \
-loop 1 \
-framerate 1 \
-i bg.jpg \
-framerate 1/5 \
-i "C:/test/%03d.jpg" \
-i audio.mp3 \
-filter_complex "[1:v]drawbox=t=5:c=white[fg];[0:v][fg]overlay=(W-w)/2:(H-h)/2:shortest=1,drawtext=fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=10,format=yuv420p[v]" \
-map "[v]"
-map 0:a
-c:v libx264 \
-r 30 \
-c:a aac -strict experimental \
-b:a 192k \
-movflags +faststart \
-shortest \
output.mp4

另请参阅

相关内容