使用FFPLAY添加视频当前时间戳时遇到的问题
问题描述
尝试在视频上叠加显示当前时间,操作后未达到预期效果。执行以下命令时,画面显示的是文本“hms}”而非时间:
"../ffmpeg-2023-01-25-git-2c3107c3e9-full_build/bin/ffplay.exe" -vf "drawtext=fontfile=./consola.ttf:text='%{pts:hms}':fontsize=48:fontcolor=white:box=1:boxborderw=6:boxcolor=black@0.75:x=(w-text_w)/2:y=h-text_h-20" -i "%shadowplays_folder%\%NEWEST_FOLDER%\%NEWEST_FILE%" -autoexit -x "1000" -alwaysontop
但将text='%{pts:hms}'替换为text='test'时,命令可正常显示文本“test”:
"../ffmpeg-2023-01-25-git-2c3107c3e9-full_build/bin/ffplay.exe" -vf "drawtext=fontfile=./consola.ttf:text='test':fontsize=48:fontcolor=white:box=1:boxborderw=6:boxcolor=black@0.75:x=(w-text_w)/2:y=h-text_h-20" -i "%shadowplays_folder%\%NEWEST_FOLDER%\%NEWEST_FILE%" -autoexit -x "1000" -alwaysontop
请问问题出在哪里?
问题原因与解决办法
- 核心问题:Windows CMD/批处理环境中,
%是环境变量的标识符号,输入%{pts:hms}时,CMD会尝试解析%{这个不存在的变量,导致最终只保留hms}显示。 - 解决办法:将
%转义为%%,修改drawtext的text参数为text='%%{pts:hms}'
修改后的完整命令:
"../ffmpeg-2023-01-25-git-2c3107c3e9-full_build/bin/ffplay.exe" -vf "drawtext=fontfile=./consola.ttf:text='%%{pts:hms}':fontsize=48:fontcolor=white:box=1:boxborderw=6:boxcolor=black@0.75:x=(w-text_w)/2:y=h-text_h-20" -i "%shadowplays_folder%\%NEWEST_FOLDER%\%NEWEST_FILE%" -autoexit -x "1000" -alwaysontop
如果是在PowerShell中执行,需将%用反引号转义,即text='%{pts:hms}',但从你的变量写法判断,当前使用的是CMD/批处理环境,优先采用%%`转义方案。
内容的提问来源于stack exchange,提问作者lalelarsen1
相关产品推荐
相关产品推荐

