Вы можете использовать now.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
в одну строку (короче, но менее элегантно):
p = subprocess.Popen(now.strftime('ffmpeg -i video.avi -i audio.wav -c:v copy -c:a aac -strict experimental -strftime 1 "ex.%Y-%m-%d_%H-%M-%S.mkv"'), stdin=subprocess.PIPE)
Если вы хотите убедиться, что вы получаете другое имя файла, вы также можете включают микросекунды:
dt_file_name = now.strftime('"ex.%Y-%m-%d_%H-%M-%S-%f.mkv"')