我尝试使用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。但是我真的需要写一个函数。谢谢
答案 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')