我是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管道,这使其运行速度更快。
最佳答案
%*
遍历提供给程序的参数。在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'])