You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让FFmpeg的drawtext滤镜使用本地化strftime格式?

解决FFmpeg drawtext本地化时间戳显示英文的问题

核心原因

FFmpeg的drawtext滤镜localtime功能生效需要两个关键前提:

  1. FFmpeg编译时启用了--enable-locale配置项
  2. 运行FFmpeg的进程正确加载了目标区域设置(如fr_FR.UTF-8),且系统已生成该locale

分步解决方案

1. 验证FFmpeg的locale支持

执行以下命令查看FFmpeg编译配置:

ffmpeg -version

检查输出的配置行中是否包含--enable-locale。如果没有,需要重新安装/编译带locale支持的FFmpeg版本:

  • Mac:使用Homebrew安装官方构建版本(默认带locale支持):
    brew install ffmpeg
    
  • Alpine Linux:默认包可能缺少locale支持,需安装完整功能版本并生成目标locale:
    # 安装依赖包
    apk add tzdata locales ffmpeg-full ttf-dejavu
    # 生成fr_FR.UTF-8区域设置
    locale-gen fr_FR.UTF-8
    

2. 调整FFmpeg命令

确保环境变量正确传递,同时指定支持法语字符的字体避免乱码:

LC_ALL=fr_FR.UTF-8 ffmpeg -hide_banner -f lavfi -i color=size=1024x768:rate=25:color=black -c:v libx264 -t 4 -filter_complex "drawtext=fontsize=18:fontcolor=white:box=1:boxcolor=black@0.5:text='%{pts\:localtime\:1669690847\:%A %-d %B %Y %X %Z}':fontfile=/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf" -y out.mp4
  • 字体路径说明:
    • Alpine使用上述命令中的DejaVu字体路径即可
    • Mac可替换为系统字体路径,如/Library/Fonts/Arial.ttf或/System/Library/Fonts/Helvetica.ttc

3. 验证Locale生效

在执行FFmpeg命令前,先确认当前shell的locale已正确切换:

LC_ALL=fr_FR.UTF-8 locale

检查输出的LC_TIME等字段是否为fr_FR.UTF-8,确保系统locale已正确加载。

内容的提问来源于stack exchange,提问作者Randy Michnovicz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:15:31