Как использовать ffmpeg в функции Python - PullRequest
0 голосов
/ 06 сентября 2018

Я пытался использовать 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 не создается.Я думаю, что что-то не так с синтаксисом или что-то в переменной «команда», что я понятия не имею, чтобы это исправить.Мой вопрос здесь заключается в том, как я могу использовать ffmpeg в основе функций Python для этого кода?

Кстати, я знал, что могу просто использовать ffmpeg без написания функции.Но мне действительно нужно написать в функции.Спасибо

Ответы [ 4 ]

0 голосов
/ 06 сентября 2018

Добавьте один символ (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')
0 голосов
/ 06 сентября 2018

Я думаю, что это так.

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')
0 голосов
/ 06 сентября 2018

Я считаю, что это должно работать:

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')
0 голосов
/ 06 сентября 2018

Попробуйте это:

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() позволяет вам ссылаться на переменные, на которые вы ссылаетесь, в строке.

См. здесь для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...