通过python脚本运行ffmpeg命令

2024-05-15 09:44:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在python中执行ffmpeg命令。 在windows cmd中从命令行执行以下命令时,它起作用:

C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi

但是,当我尝试以这种方式在python中运行this命令时:

^{pr2}$

它不起作用

我也试过这样

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi'
subprocess.check_call(cmd) 

但效果并不理想

我想知道我做错了什么。我用的是python2.76。谢谢。在


Tags: 命令cmdbinvideovirtualscreenaudioffmpeg
3条回答

Windowserror:[Error 2]由于shell=False错误而出现。在

如果正在运行将cmd作为字符串的命令,则必须使用shell=True

cmd='C:\FFmpeg\bin\ffmpeg -rtbufsize 100000k -r 65535/2733 -f dshow -i audio="virtual-audio-capturer":video="screen-capture-recorder" output100.avi'
subprocess.check_call(cmd, shell=True)

如果运行时没有shell=True,则必须将cmd作为list传递:

^{pr2}$

以上语句对于Popen和check_call函数是相同的。在

试试这个:

import os
os.system(cmd)

据我所知,这个方法不如子进程先进,但它做了它应该做的事情。在

如果没有错误消息,我无法判断,但大多数文档都说要使用“ffmpeg.exe“作为调用可执行文件时的二进制文件。此外,您可以将args列为一个列表并将其传入:

未经测试

import subprocess as sp

def get_ffmpeg_bin():
    ffmpeg_dir = "C:\\FFmpeg\\bin\\ffmpeg"
    FFMPEG_BIN = os.path.join(ffmpeg_dir, "ffmpeg.exe")
    return FFMPEG_BIN


pipe = sp.Popen([ffmpeg_binary, "-rtbufsize", "100000k", "-r", "65535/2733", "-f", "dshow", "-i", 'audio="virtual-audio-capturer":video="screen-capture-recorder"', "output100.avi"])

pipe.wait()

相关问题 更多 >