ffmpeg 字幕对齐和位置

ffmpeg subtitles alignment and position

我正在使用以下方法为视频添加字幕:

ffmpeg -i "imput.mp4" -lavfi "subtitles=subtitles.srt:force_style='OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=18'" -crf 1 -c:a copy "output.mp4"

这导致:

我正在使用 Alignment 重新定位它:

ffmpeg -i "imput.mp4" -lavfi "subtitles=subtitles.srt:force_style='Alignment=9,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=18'" -crf 1 -c:a copy "output.mp4"

但根据 Line-Alignment ASS Tags 文档,只有 9 个位置。 1:左下,2:中下,3:右下,5:左上,6:上中,7:右上,9:左中,10:中中,11:右中

有没有办法调整这个定位?

我希望潜艇是 left-aligned,但要低一些。像这样:

事实上你也可以像"MarginV=20"一样放一些边距来调整字幕的位置

ffmpeg2 -y -i "C:\Users\input.mxf" -pix_fmt yuv422p -vcodec mpeg2video -non_linear_quant 1 -flags +ildct+ilme -top 1 -dc 10 -intra_vlc 1 -qmax 6 -lmin "1*QP2LAMBDA" -vtag xd5c -rc_max_vbv_use 1 -rc_min_vbv_use 1 -g 12 -b:v 50000k -minrate 50000k -maxrate 51000k -bufsize 8000k -color_primaries 1 -color_trc 1 -colorspace 1 -vf "subtitles=subtitles_file.mxf_Subtitle.srt:force_style='OutlineColour=&H80000000,BorderStyle=3,Outline=1,Shadow=0,MarginV=20" -acodec copy "output.mxf"

原来这样做的技巧是添加 Alignment=0。 然后就可以自由使用MarginVMarginL了:

ffmpeg -i "imput.mp4" -lavfi "subtitles=subtitles.srt:force_style='Alignment=0,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize=18,MarginL=5,MarginV=25'" -crf 1 -c:a copy "output.mp4"

我尝试缩小文本并调整底部边距: Alignment=2, Fontsize = 5, MarginV = 1 这对我有用。 像这样:

ffmpeg -i "1.mkv" -lavfi "subtitles=1.srt:force_style='Alignment=2,OutlineColour=&H100000000,BorderStyle=3,Outline=1,Shadow=0,Fontsize= 12,MarginV=35'" -crf 1 -c:a copy  -vcodec h264_nvenc  "output.mkv"

*-vcodec h264_nvenc 是cuda加速器。

我用我的设计技能测试了每一个对齐方式并制作了文档。