如何在python函数中使用ffmpeg

如何在python函数中使用ffmpeg,python,audio,ffmpeg,Python,Audio,Ffmpeg,我尝试使用ffmpeg从视频文件中提取音频,这是我的代码 import io import os import subprocess def extract_audio(video,output): command = "ffmpeg -i '{video}' -ac 1 -f flac -vn '{output}'" subprocess.call(command,shell=True) extract_audio('dm.MOV','dm-new.flac') 编译后

我尝试使用ffmpeg从视频文件中提取音频,这是我的代码

import io
import os
import subprocess

def extract_audio(video,output):
    command = "ffmpeg -i '{video}' -ac 1  -f flac -vn '{output}'"
    subprocess.call(command,shell=True)

extract_audio('dm.MOV','dm-new.flac')
编译后我没有收到任何错误。通过这样做,我应该得到一个新文件,它是'dm new.flac'。但是在我编译脚本之后没有创建这样的flac文件。我认为语法有问题,或者变量“command”中有问题,我不知道如何解决这个问题。我这里的问题是如何在基于此代码的python函数中使用ffmpeg

顺便说一下,我知道我可以只使用ffmpeg而不编写函数。但我真的需要在函数中写入。谢谢

试试这个:

import io
import os
import subprocess

def extract_audio(video,output):
    command = "ffmpeg -i {video} -ac 1  -f flac -vn {output}".format(video=video, output=output)
    subprocess.call(command,shell=True)

extract_audio('dm.MOV','dm-new.flac')
我认为您试图引用字符串中的两个变量,但没有告诉Python您应该用相应的变量替换“video”和“output”
.format()
允许您引用字符串中引用的变量

有关更多信息,请参阅。

我想就是这个了

import io
import subprocess
def extract_audio(video,output):
    command = "ffmpeg -i {} -ac 1  -f flac -vn {}".format(video,output)
    subprocess.call(command,shell=True)

extract_audio('dm.MOV','dm-new.flac')

我相信这应该行得通:

import io
import os
import subprocess

def extract_audio(video,output):
    command = "ffmpeg -i {} -ac 1  -f flac -vn {}".format(video, output)
    subprocess.call(command,shell=True)

extract_audio('dm.MOV','dm-new.flac')
添加一个字符(
f
)来解决它(通过python 3.6):


如果你把它放在python之外的脚本中,它对你有用吗?是的,如果我不使用函数
c3=“ffmpeg-I dm.mov-ac 1-f flac-vn testdm.flac”subprocess.call(c3,shell=True)
这样,它就有用了即使这样,我仍然认为脚本字符串中根本不需要引号,我怀疑你仍然得到了一个引号,但这也只是一个例子guess@kevinkayaks
command='ffmpeg-i{video}-ac 1-f flac-vn{output}'
这就是我的意思,但它没有工作有趣。。。接受答案,但在我的回答后两分钟写下。。。赢一些,输一些!不一样!对我来说很好-你测试过吗?哦,我以为你有额外的报价。好吧,太好了!
import subprocess
def extract_audio(video,output):
    command = f"ffmpeg -i '{video}' -ac 1  -f flac -vn '{output}'"
    subprocess.call(command,shell=True)

extract_audio('dm.MOV','dm-new.flac')