最近在视频中添加文字的时候,遇到中文显示乱码的问题,使用的命令行如下:
file="$1" ofile="$2" # echo ${ofile} title_fl="drawtext=fontfile=fontcolor=white:fontsize=100:line_spacing=7:borderw=4:bordercolor=red:text='$4':x=(w-text_w)/2:y=(h/3-text_h)/2" link_fl="drawtext=fontfile=fontcolor=white:fontsize=40:line_spacing=7:borderw=2:bordercolor=red:text='点击详情查看更多政策↓↓↓↓↓':x=(w-text_w)/2:y=h-(h/3-text_h)/2-text_h" tips_fl="drawtext=fontfile=fontcolor=gray:fontsize=16:line_spacing=7:text='本政策由$3品牌提供,具体政策详情请咨询当地授权经销商':x=5:y=h-text_h-5" tips2_fl="drawtext=fontfile=fontcolor=gray:fontsize=16:line_spacing=7:text='安全出行,请遵守交通规则':x=w-text_w-5:y=h-text_h-5" ffmpeg -i $1 -filter_complex "[0:v]split=2[in1][in2];[in1]crop=(ih/16*9):ih,scale=iw/2:-1,gblur=sigma=7,scale=720:1280[vbg];\ [in2]scale=720:-1[pv];[vbg][pv]overlay=0:(H-h)/2[vout];\ [vout]${link_fl}[do];[do]${title_fl}[t];[t]${tips_fl}[tp1];[tp1]${tips2_fl}" -y "${ofile}.mp4"
优化:
file="$1" ofile="$2" # echo ${ofile} title_fl="drawtext=fontfile=/data/www/font/simhei.ttf:fontcolor=white:fontsize=100:line_spacing=7:borderw=4:bordercolor=red:text='$4':x=(w-text_w)/2:y=(h/3-text_h)/2" link_fl="drawtext=fontfile=/data/www/font/simhei.ttf:fontcolor=white:fontsize=40:line_spacing=7:borderw=2:bordercolor=red:text='点击详情查看更多政策↓↓↓↓↓':x=(w-text_w)/2:y=h-(h/3-text_h)/2-text_h" tips_fl="drawtext=fontfile=/data/www/font/simhei.ttf:fontcolor=gray:fontsize=16:line_spacing=7:text='本政策由$3品牌提供,具体政策详情请咨询当地授权经销商':x=5:y=h-text_h-5" tips2_fl="drawtext=fontfile=/data/www/font/simhei.ttf:fontcolor=gray:fontsize=16:line_spacing=7:text='安全出行,请遵守交通规则':x=w-text_w-5:y=h-text_h-5" ffmpeg -i $1 -filter_complex "[0:v]split=2[in1][in2];[in1]crop=(ih/16*9):ih,scale=iw/2:-1,gblur=sigma=7,scale=720:1280[vbg];\ [in2]scale=720:-1[pv];[vbg][pv]overlay=0:(H-h)/2[vout];\ [vout]${link_fl}[do];[do]${title_fl}[t];[t]${tips_fl}[tp1];[tp1]${tips2_fl}" -y "${ofile}.mp4"
滤镜参数说明:
drawtext是用来添加文字的滤镜名称;
fontfile:指定的字体文件;
textfile:需要添加的文字文件,也可以用text=‘Hello world’这种格式指定需要添加的文字,但是对于大量文字,显然文件更为方便;
x,y:文字左上角在画面上显示的位置;
fontsize:字体大小;
fontcolor:字体颜色,可以通过0xRRGGBB@0.X来指定文字的透明度,例如0xFF0000@0.5为红色半透明。
reload:为1时表示每帧重新load字体文件,可以实现实时更新显示文字的功能。