我是一个python初学者,希望能够在python脚本上删除视频文件,并在其上运行多个FFMPEG命令,将文件名作为输出文件名的变量传递。 我得到了点点滴滴的命令。我很感激我能编辑的基本功能脚本。 我目前使用的是Windows批处理:
FOR %%a IN (%*) do (
c:\ffmpeg.exe -i "%%~a" "do some stuff" "D:\%%~na\%%~na_360.mp4"
c:\ffmpeg.exe -i "%%~a" "do some stuff" "D:\%%~na\%%~na_480.mp4"
)
我认为Python应该运行多平台(Win,Mac,Linux),python有FFMPEG管道,这使得它很快。
答案 0 :(得分:2)
%*
迭代给予程序的参数。在python中,这些在sys.argv
中可用,但第一个参数argv[0]
是程序本身的名称;因此,对于其他参数,我们使用sys.argv[1:]
。 ~n
代表文件名,在Python中可以在os.path.basename
的帮助下实现;我们也使用subprocess.call
执行程序,因为它比os.system
更安全;需要r''
原始字符串,因为\
用于在普通Python字符串中转义;虽然原始字符串不适用于以\\
结尾的字符串 - 但我们需要'D:\\'
。
因此我们得到:
import sys
from subprocess import call
from os.path import basename, join, splitext
for a in sys.argv[1:]:
base, _ = splitext(basename(a))
# target_prefix is D:\%%~na\%%~na
target_prefix = join('d:\\', base, base)
args = [r'c:\ffmpeg.exe', '-i', a, 'do', 'some', 'stuff']
call(args + [target_prefix + '_360.mp4'])
call(args + [target_prefix + '_480.mp4'])