ffprobe输出是否依赖用户区域设置?法语环境下小数格式问题咨询
关于ffprobe在法语系统下的时长输出问题
问题解答
会的。法语系统的区域设置(LC_NUMERIC)默认使用逗号作为小数分隔符,ffprobe在未指定输出格式时,会遵循系统的区域设置规则,因此时长32.85会被输出为“32,85”。
最佳处理方式
- 指定标准化输出格式:使用
-print_format json或-print_format csv参数强制输出结构化数据,这类格式的数值会采用标准的点分隔符,不受系统区域影响。示例命令:
从JSON结果中提取ffprobe -v quiet -print_format json -show_format input.mp4duration字段即可得到标准格式的时长数值。 - 强制使用C区域环境:在执行ffprobe前设置
LC_NUMERIC=C,强制程序使用C语言标准的数值格式(点作为小数分隔符)。示例命令:LC_NUMERIC=C ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4 - 文本替换处理:如果已经获取到逗号分隔的输出结果,可通过文本工具替换逗号为点。示例:
ffprobe -v quiet -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4 | sed 's/,/./'
内容的提问来源于stack exchange,提问作者pete
相关产品推荐
相关产品推荐

