如何在python函数中使用ffmpeg

时间:2018-09-06 06:36:38

标签: 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')

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

顺便说一句,我知道不用编写函数就可以使用ffmpeg。但是我真的需要写一个函数。谢谢

4 个答案:

答案 0 :(得分:2)

尝试一下:

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您应将“视频”和“输出”替换为其对应的变量。 .format()允许您引用字符串中引用的变量。

有关更多信息,请参见here

答案 1 :(得分:2)

添加一个字符(f)来解决该问题(通过python 3.6):

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')

答案 2 :(得分:1)

我认为就是这样。

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')

答案 3 :(得分:0)

我相信这应该可行:

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')