给实时流视频添加当前日期+时间字幕
作者:Vic ,分类:FFmpeg 发布于 2020-06-24 14:30:19

需求来源

之前给自己做的家庭监控最近发现缺少点东西 , 我在手机端拉流查看实时监控的时候 , 无法直观的看到实时视频的录制时间 , 从而也就无法推断出拉流延时间隔 , 所以就想到了给视频添加录制时间 , 我使用的是ffmpeg实时推流和编码工具 , 它的功能着实强大 , 给视频添加个字幕搓搓有余 , ffmpeg有个drawtext 的组件 , 官方 FFmpeg-drawtext文档 描述的是 drawtext使用libfreetype库从视频顶部的指定文件中绘制文本字符串或文本 , libfreetype是啥我也不知道 , 暂时就不管它了, 我这里只了解和使用命令参数就可以了.

命令和参数

以下命令参数是给视频的帧画面添加一段当前日期+时间的文本,字体大小是30 ,默认位置在图像的xy坐标0点

-vf "drawtext=expansion=strftime:box=1:fontsize=30:text='%Y-%m-%d %H\\:%M\\:%S'"

以上参数解释:

    • -vf : 代表 video filter , 此参数是开启视频过滤器
    • drawtext : 开启绘制文本字符串的属性 , 其值为属性字符串 , 属性和值之间使用 = 号拼接 , 属性和属性之间使用 : 号拼接 , 也有其他书写方式 , 可以参考官方文档
    • expansion : 选择文本的展开方式 , expansion设置为strftime,过滤器将识别所提供text 属性中的strftime格式字符串
    • box : 是否显示文本背景颜色 , 该值为1(启用)或0(禁用为默认) .启用后默认背景颜色是white , 可以使用boxcolor 属性实现来指定背景色 , 色值需参考 ffmpeg-color , 我这就使用默认的
    • fontsize : 字体大小 , 默认是16 ,我这使用的是30 , 也可以使用font , fontfile , fontcolor 属性改变字体或使用自己的字体文件和修改字体颜色 , 我这就使用的默认的
    • text : 要绘制的文本字符串 , 文本必须是UTF-8编码字符序列。如果没有使用参数textfile指定文件,则此参数是必需的
    • 如果你想改变文本在视频画面中的位置, 使用xy属性即可, 期默认值都为0 ,我这使用默认的
    • 以上就是绘制文本基本使用的参数 , 更多功能参数还有很多 , 可以参考官方的 FFmpeg-drawtext文档

以下是字幕效果

拉流使用的app是腾讯的 视频云工具包 里的 直播拉流功能 , 这个工具很方便 , 拉流和推流都支持 .