Python 3.x 如何在ffmpeg中为文件指定随机名称

Python 3.x 如何在ffmpeg中为文件指定随机名称,python-3.x,datetime,ffmpeg,Python 3.x,Datetime,Ffmpeg,如何在ffmpeg中为输出文件指定随机名称 我想把文件名作为当前日期和时间(例如2020-3-18-10-13-4.mkv) 我不想给出像output.mkv这样的修复名称 导入操作系统 导入子流程 将tkinter作为tk导入 导入日期时间 root=tk.tk() chdir(f'C://Users/{os.getlogin()}/desktop/')) def录制_语音(): 全局p p=subprocess.Popen('ffmpeg-i video.avi-i audio.wav-c:

如何在ffmpeg中为输出文件指定随机名称

我想把文件名作为当前日期和时间(例如2020-3-18-10-13-4.mkv)

我不想给出像output.mkv这样的修复名称

导入操作系统
导入子流程
将tkinter作为tk导入
导入日期时间
root=tk.tk()
chdir(f'C://Users/{os.getlogin()}/desktop/'))
def录制_语音():
全局p
p=subprocess.Popen('ffmpeg-i video.avi-i audio.wav-c:v copy-c:a aac-严格实验-strftime 1”%Y-%m-%d_%H-%m-%S.mkv“',stdin=subprocess.PIPE)
rec_btn=tk.按钮(text='Start merging',width=20,command=recording_voice)
记录文件包()
root.mainloop()

您现在可以使用
。strftime
和字符串串联:

假设您实际上不需要随机文件名,只需要包含当前日期和时间的名称,您可以使用以下代码:

import subprocess
from datetime import datetime

# datetime object containing current date and time
now = datetime.now()

# Build file name with current date and time (with inverted commas):
dt_file_name = now.strftime('"ex.%Y-%m-%d_%H-%M-%S.mkv"')

# Concatenate file name to ffmpeg command line (use plus for strings concatenation):
p = subprocess.Popen('ffmpeg -i video.avi -i audio.wav -c:v copy -c:a aac -strict experimental -strftime 1 ' + dt_file_name, stdin=subprocess.PIPE)
您也可以在一行中使用
now.strftime
(较短但不太优雅):

如果要确保获得不同的文件名,还可以包括微秒:

dt_file_name = now.strftime('"ex.%Y-%m-%d_%H-%M-%S-%f.mkv"')

为什么
random
只是临时的?如果是这样,您可能想查看
tempfile
模块。@AChampion no它不是临时的。我想将当前日期时间设置为文件名。每次程序运行时,它都会将当前日期时间分配给文件名。有没有办法隐藏cmd窗口。正如我所不知道的;我不想显示cmd窗口,只想在后台运行此进程。是的,请检查下面的“否”,这无助于查找错误,我想在运行此代码时隐藏cmd窗口。我看不到任何命令窗口,但您可以检查
dt_file_name = now.strftime('"ex.%Y-%m-%d_%H-%M-%S-%f.mkv"')