Multilingual_Video_Subtitler / video_to_audio_converter.py
karin.brisker
app
7630e84
raw
history blame contribute delete
No virus
1.27 kB
import os
import subprocess
import ffmpeg
from utils import log
class VideoToAudioConverter:
@staticmethod
def convert(path_to_video: str, output_ext="mp3") -> str:
"""Converts video to audio directly using `ffmpeg` command
with the help of subprocess module"""
log("Converts video to audio")
filename, ext = os.path.splitext(path_to_video)
subprocess.call(["ffmpeg",
"-y",
"-i",
path_to_video,
f"{filename}.{output_ext}"],
stdout=subprocess.DEVNULL,
stderr=subprocess.STDOUT)
video_length = float(ffmpeg.probe(path_to_video)['format']['duration'])
audio_length = float(ffmpeg.probe(f"{filename}.{output_ext}")['format']['duration'])
if video_length - audio_length > 1:
raise Exception("Conversion failed")
return f"{filename}.{output_ext}"
if __name__ == '__main__':
video_to_audio_converter = VideoToAudioConverter()
video_to_audio_converter.convert('iPhone_14_Pro.mp4')
if os.path.exists('sample/iPhone_14_Pro.mp3'):
log("File converted successfully")
else:
log("File conversion failed")