原创文|Space9
发布日期:2020年01月03日 10:10
Python 3 使用subprocess调用FFmpeg进行转码,通过控制台输出日志中的时间来计算转换进度
注意事项:
- FFmpeg日志中的时间进度是在stderr(标准错误)中输出,所以需要将stderr(标准错误)和stdout(标准输出)两个输出流进行合并,才能获取进度相关日志。
- 使用subprocess.Popen调用cmd命令行,不同操作系统的换行符不统一,windows:\r\n mac:\r linux:\n,所以需要使用text = True来调整换行符(或者Universal_newlines = True)。Changed in version 3.7: Added the text parameter, as a more understandable alias of universal_newlines.(在3.7版中的改变:添加了text参数,作为Universal_newlines的更易理解的别名。)
- 对于cmd命令行中有中文字符参数,还应该添加encoding = "utf-8"参数。
完整代码
import re
import subprocess
# 将日志输出的时间类型转换成秒
def get_seconds(time):
h = int(time[0:2])
# print("时:" + str(h))
m = int(time[3:5])
# print("分:" + str(m))
s = int