使用 ffmpeg 将图像与视频连接起来

使用 ffmpeg 将图像与视频连接起来

我有一个下载的视频youtube-dlffmpeg。我想使用循环函数创建一个由图像和下载的视频组成的视频。

./ffmpeg -f concat -safe 0 -i list.txt -c copy merged.mp4

我的 list.txt 文件里面是

file word_img.jpg
file youtube_video.mp4

运行底部的命令会创建一个新视频。只是它与 YouTube 视频完全相同。其他图像从未添加。这可能与编码有关吗?

我也尝试了另一种方法,情况如下。

./ffmpeg -t 125 -async 1 -i youtube_video.mp4\
   -t 5 -i word_img.jpg \
   -filter_complex "[0]loop=149:1:0[bgheld5]; \
                    [1]loop=149:1:0[fgheld5]; \
                    [bgheld5][fgheld5]overlay=eof_action=pass" out.mp4

这种方法可行。静态图像显示 5 秒,然后播放 30 秒的 YouTube 视频。问题是 YouTube 视频的音频和视频不同步约 5 秒。

运行./ffmpeg -i img.jpg返回以下内容

Input #0, image2, from 'img.jpg':
Duration: 00:00:00.04, start: 0.000000, bitrate: 1258 kb/s
Stream #0:0: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x356 [SAR 96:96 DAR 160:89], 25 tbr, 25 tbn, 25 tbc

运行./ffmpeg -i video.mp4返回以下内容

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'video.mp4':
Metadata:
major_brand     : isom
minor_version   : 512
compatible_brands: isomiso2avc1mp41
encoder         : Lavf58.26.101
Duration: 00:02:00.04, start: 0.000000, bitrate: 575 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x356 [SAR 1:1 DAR 160:89], 440 kb/s, 24.98 fps, 24.98 tbr, 25k tbn, 49.95 tbc (default)
Metadata:
  handler_name    : ISO Media file produced by Google Inc. Created on: 
10/28/2018.
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
  handler_name    : ISO Media file produced by Google Inc. Created on: 10/28/2018

答案1

我假设您有一个静态图像文件和一个想要连接的视频。图像应显示五秒钟,无音频;视频应紧随其后。

您可以使用以下命令运行所有内容:

ffmpeg \
  -loop 1 -framerate 24 -t 5 -i image.png \
  -f lavfi -t 1 -i anullsrc \
  -i video.mp4 \
  -filter_complex " \
    [2:v]scale=320:240,setsar=sar=1[video]; \
    [0:v][1:a][video][2:a]concat=n=2:v=1:a=1 \
  " output.mp4

它能做什么:

  • 将图像指定为输入0,以 24 fps 的速度循环播放,最长为 5 秒。
  • 指定静音音频作为第二个输入1,这是连接所需的
  • 指定视频作为第三个输入2
  • 将视频缩放到与图像相同的大小(但你当然也可以缩放图像……只需将输入标识符交换2:v1:v并重命名标签video
  • 将其样本纵横比设置为 1(这是针对不同 SAR 的快速修复方法;您可能需要更明确地说明,如图所示这里
  • 将徽标+静音音频与视频连接起来。

您还可以使用scale2ref过滤器(另一个示例这里)将徽标缩放到视频大小:

-filter_complex " \
  [0:v][2:v]scale2ref[logo][video]; \
  [logo]setsar=sar=1[logo];  \
  [logo][1:a][video][2:a]concat=n=2:v=1:a=1 \
"

相关内容