FFMPEG将文字框架添加到视频开头

时间:2016-02-11 21:41:00

标签: ffmpeg concat 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

示例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)

Screenshot from joined.mp4

Screenshot for step 3 console

2 个答案:

答案 0 :(得分:2)

您必须生成一个4秒的视频,其中包含与现有视频的参数匹配的虚拟音频,包括时基,然后使用concat demuxer和streamcopy。

对于Q:

中显示的示例文件

第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

对于WebM,将-c:v libx264替换为-c:v libvpx,将-c:a aac替换为-c:a libvorbis,将intro.mp4替换为intro.webm。您可以删除-video_track_timescale 15360,因为WebM倾向于使用我已经看过的单个时间刻度。

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

file 'intro.mp4'
file 'input.mp4'

第3步 Concat

ffmpeg -f concat -i list.txt -c copy -fflags +genpts joined.mp4

此处重要的变量是视频尺寸1280x720,帧速率-r 30-pix_fmt yuv420p,采样率-ar 48000,格式-sample_fmt fltp,频道布局{{1当然还有编解码器。

答案 1 :(得分:0)

简短回答是您无法将新数据编码为mp4或webm,并将其插入视频流的前端。这些格式根本不起作用。这两种编码格式都是有损的,因此如果再次对它们进行解码和编码,则第二次编码将丢失/更改其他信息。你可以做别的事,但你想做的事情是行不通的。

相关问题