首页 > 解决方案 > 如何在子进程的命令中添加变量名?

问题描述

我需要读取文件夹中的所有视频,然后将每个视频与其原始类型进行比较,计算 PSNR 后,保存 PSNR 文本文件。为此,我使用了以下代码:

subprocess.call(['ffmpeg.exe', '-i', {i}, '-i', {o}, '-lavfi', 'psnr=stats_file=''{n}', '-f', 'null', '-'])

我将输入和输出文件的名称作为变量输入{i}{o}每次可以是不同的视频文件,我还需要保存相关的 PSNR 文本文件,为此我定义了n(n=psnrmkv.txt')。但它无法生成 psnrmkv.txt。你有什么建议吗?问题是什么?

我编写了以下代码来读取文件夹中的所有 mp4 文件并计算 PSNR:

import subprocess
import os 
import numpy as np
import scipy.io as sio
import cv2

os.chdir("E:/mpeg_file/") #change directory to downloads folder

suffix =".mp4"    #variable holdinng the .mp4 tag
fnames = os.listdir('.')  #looks at all files
# files = [x for x in os.listdir() if x.endswith(".mp4")]

files =[]  #an empty array that will hold the names of our mp3 files
i=0
for fname in fnames:  
    if fname.endswith(suffix):
        pname = os.path.abspath(fname)
        n="psnr"
        n=n+str(i)+".txt"
        subprocess.call(['ffmpeg.exe', '-i', pname, '-i', pname, '-lavfi', f'psnr=stats_file={n}', '-f', 'null', '-'])
        i=i+1   
        files.append(pname)  #add the mp3 files to our array
print (files)

但它不会产生任何 psnr 文本文件!!你能告诉我有什么问题吗?它完全运行,但我没有任何输出。我还需要添加保存 psnr 文本文件的位置subprocess

标签: pythonpython-3.x

解决方案


推荐阅读