как дать случайное имя файлу в ffmpeg - PullRequest
1 голос
/ 18 марта 2020

Как я могу дать случайное имя выходному файлу в ffmpeg.

Я хочу дать имя файла в качестве текущей даты_ времени (ex.2020-3-18-10-13-4.mkv).

Я не хочу давать имя исправления, например output.mkv.

import os
import subprocess
import tkinter as tk
import datetime

root = tk.Tk()

os.chdir(f'C://Users/{os.getlogin()}/desktop/')
def recording_voice():
  global p
  p =subprocess.Popen('ffmpeg -i video.avi -i audio.wav -c:v copy -c:a aac -strict experimental -strftime 1 "%Y-%m-%d_%H-%M-%S.mkv"' ,stdin=subprocess.PIPE)


rec_btn = tk.Button(text='Start merging', width=20, command=recording_voice)
rec_btn.pack()


root.mainloop()

1 Ответ

2 голосов
/ 18 марта 2020

Вы можете использовать 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"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...