generated from thinkode/modelRepository
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
|
|
from moviepy import VideoFileClip
|
||
|
|
import shutil
|
||
|
|
import argparse
|
||
|
|
import os
|
||
|
|
import shutil
|
||
|
|
import json
|
||
|
|
from log import log_step
|
||
|
|
from genericpath import exists
|
||
|
|
|
||
|
|
try:
|
||
|
|
# Create the parser
|
||
|
|
parser = argparse.ArgumentParser(description="dubstudio audio extraction tool (v1.0) - V. BOULANGER - 2025")
|
||
|
|
|
||
|
|
# Options definition
|
||
|
|
parser.add_argument('-v', '--video', help='Video file to process', default='video.mp4')
|
||
|
|
parser.add_argument('-o', '--output', help='Output audio file name', default='audio.wav')
|
||
|
|
parser.add_argument('-f', '--folder', help="Output folder name where the WAV audio files will be stored", default='artifacts')
|
||
|
|
|
||
|
|
# Options analyzing
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
log_step('init', 100, {
|
||
|
|
"videoFile": args.video,
|
||
|
|
"outputFolder": args.folder,
|
||
|
|
"outputFile": args.output
|
||
|
|
})
|
||
|
|
|
||
|
|
# Create the temporary directory
|
||
|
|
if not exists(args.folder):
|
||
|
|
os.mkdir(args.folder)
|
||
|
|
|
||
|
|
log_step('directoryCreation', 100, "creating the output directory")
|
||
|
|
|
||
|
|
# Conversion to audio only
|
||
|
|
video = VideoFileClip(args.video)
|
||
|
|
video.audio.write_audiofile("{}/{}".format(args.folder, args.output))
|
||
|
|
log_step('audio_extraction', 100, "extracting the audio from the video")
|
||
|
|
|
||
|
|
except KeyboardInterrupt:
|
||
|
|
# Delete the output folder
|
||
|
|
if exists(args.folder):
|
||
|
|
shutil.rmtree(args.folder)
|
||
|
|
log_step("exit", 100, "program exit")
|
||
|
|
|
||
|
|
except Exception as e:
|
||
|
|
log_step("error", 100, str(e))
|