开发者社区> 问答> 正文

如何给ffmpeg中的文件命名

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

我想将文件名指定为当前date_time(例如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()

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 20:18:39 1754 0
1 条回答
写回答
取消 提交回答
  • 您可以使用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"')
    

    回答来源:stackoverflow

    2020-03-23 20:18:43
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载