我是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'])

07-24 09:38
查看更多