FFMPEG 将文本帧添加到视频的开头

Rya*_*yan 4 concat ffmpeg drawtext

我有一些 mp4 或 webm 格式的视频,我想使用 ffmpeg 在每个视频的开头添加 4 秒,以在中心显示一些没有声音的文本。

其他一些要求:

  • 尽量避免重新编码视频
  • 需要保持质量(分辨率、比特率等)
  • (可选)使文本淡入/淡出

我是 ffmpeg 的新手,任何帮助将不胜感激。

提前致谢

下面是 mp4 的示例 ffprobe 信息:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf55.33.100
  Duration: 00:00:03.84, start: 0.042667, bitrate: 1117 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 1021 kb/s, 30 fps, 30 tbr, 15360 tbn, 60 tbc (default)
Metadata:
  handler_name    : VideoHandler
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 140 kb/s (default)
Metadata:
  handler_name    : SoundHandler
Run Code Online (Sandbox Code Playgroud)

示例 webm

Input #0, matroska,webm, from 'input.webm':
  Metadata:
  encoder         : Lavf55.33.100
 Duration: 00:00:03.80, start: 0.000000, bitrate: 1060 kb/s
   Stream #0:0(eng): Video: vp8, yuv420p, 1280x720, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
   Stream #0:1(eng): Audio: vorbis, 48000 Hz, stereo, fltp (default)
Run Code Online (Sandbox Code Playgroud)

来自joined.mp4的截图

步骤 3 控制台的屏幕截图

Gya*_*yan 5

您必须使用与现有视频的参数(包括时基)匹配的虚拟音频生成一个 4 秒的视频,然后将 concat demuxer 与 streamcopy 结合使用。

对于 Q 中显示的示例文件:

Step 1生成文字视频

ffmpeg -f lavfi -r 30 -i color=black:1280x720 -f lavfi -i anullsrc -vf "drawtext=fontfile='/path/to/font.ttf':fontcolor=FFFFFF:fontsize=50:text='Your text':x='(main_w-text_w)/2':y='(main_h-text_h)/2',fade=t=in:st=0:d=1,fade=t=out:st=3:d=1" -c:v libx264 -b:v 1000k -pix_fmt yuv420p -video_track_timescale 15360 -c:a aac -ar 48000 -ac 2 -sample_fmt fltp -t 4 intro.mp4
Run Code Online (Sandbox Code Playgroud)

对于WebM的,更换-c:v libx264-c:v libvpx-c:a aac-c:a libvorbisintro.mp4intro.webm。您可以删除 ,-video_track_timescale 15360因为 WebM 倾向于使用我见过的单一时间尺度。

第 2 步准备 concat 文件,例如,list.txt

file 'intro.mp4'
file 'input.mp4'
Run Code Online (Sandbox Code Playgroud)

步骤3的毗连

ffmpeg -f concat -i list.txt -c copy -fflags +genpts joined.mp4
Run Code Online (Sandbox Code Playgroud)

这里重要的变量是视频大小1280x720,帧速率-r 30-pix_fmt yuv420p,采样率-ar 48000,格式-sample_fmt fltp,信道布局-ac 2,当然,编解码器。