From 63bf1d0aa759effc8f220271c57f666706aeb203 Mon Sep 17 00:00:00 2001 From: Vidya Koesmahargyo Date: Mon, 30 Nov 2020 18:09:05 -0500 Subject: [PATCH 1/3] added file conversion --- process_data.py | 82 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/process_data.py b/process_data.py index 0283f9f2..cd5e4e1c 100644 --- a/process_data.py +++ b/process_data.py @@ -57,7 +57,7 @@ def process_raw_video_file(args, s_config, r_config): else: logger.info('Enter correct video(*.mp4) file path.') - + except Exception as e: logger.error('Failed to process mp4 file.') pf.remove_file(video_file[0]) @@ -76,15 +76,15 @@ def process_raw_audio_file(args, s_config, r_config): if len(audio_file)>0: logger.info('Calculating raw variables...') - + out_path = os.path.join(args.output_path, 'raw_variables') pf.process_acoustic(audio_file[0], out_path, args.dbm_group, r_config) - + else: logger.info('Enter correct audio(*.wav) file path.') except Exception as e: logger.error('Failed to process wav file.') - + def process_raw_video_dir(args, s_config, r_config): """ Processing video file @@ -94,17 +94,19 @@ def process_raw_video_dir(args, s_config, r_config): r_config: raw feature config object """ if args.output_path != None: - vid_loc = glob.glob(args.input_path + '/*.mp4') - + vid_loc = glob.glob(args.input_path + '/*.mp4') + glob.glob(args.input_path + '/*.mov') + if len(vid_loc) == 0: logger.info('Directory does not have any MP4 files.') return - + logger.info('Calculating raw variables...') for vid_file in vid_loc: try: - - common_video(vid_file, args, r_config) + fname, file_ext = os.path.splitext(vid_file) + if file_ext == '.mov': + convert_file(vid_file) + common_video(fname+'.mp4', args, r_config) except Exception as e: logger.error('Failed to process mp4 file.') pf.remove_file(vid_file) @@ -118,21 +120,39 @@ def process_raw_audio_dir(args, s_config, r_config): r_config: raw feature config object """ if args.output_path != None: - audio_loc = glob.glob(args.input_path + '/*.wav') - + audio_loc = glob.glob(args.input_path + '/*.wav') + glob.glob(args.input_path + '/*.mp3') + if len(audio_loc) == 0: logger.info('Directory does not have any WAV files.') return - + logger.info('Calculating raw variables...') for audio in audio_loc: try: - + fname, file_ext = os.path.splitext(audio) + if file_ext == '.mp3': + convert_file(audio) out_path = os.path.join(args.output_path, 'raw_variables') - pf.process_acoustic(audio, out_path, args.dbm_group, r_config) + pf.process_acoustic(fname+'.wav', out_path, args.dbm_group, r_config) except Exception as e: logger.error('Failed to process wav file.') - + +def convert_file(input_filepath): + _, file_ext = os.path.splitext(os.path.basename(input_filepath)) + fname, _ = splitext(input_filepath) + + if file_ext == '.mp3': + output_filepath = fname + '.wav' + logger.info('Converting audio from {} to wav'.format(input_filepath)) + call = ['ffmpeg', '-i', input_filepath, output_filepath] + + if file_ext == '.mov': + output_filepath = fname + '.mp4' + logger.info('Converting video from {} to mp4'.format(input_filepath)) + call = ['ffmpeg', '-i', input_filepath, output_filepath] + + subprocess.check_output(call) + def process_derive(args, r_config, d_config, input_type): """ Processing dbm derived variables @@ -141,43 +161,49 @@ def process_derive(args, r_config, d_config, input_type): input_file = glob.glob(args.input_path) else: input_file = glob.glob(args.input_path + '/*') - + out_raw_path = os.path.join(args.output_path, 'raw_variables') out_derive_path = os.path.join(args.output_path, 'derived_variables') - + logger.info('Calculating derived variables...') feature_df = der.run_derive(input_file, out_raw_path, out_derive_path, r_config, d_config) - + if __name__=="__main__": start_time = time.time() parser = argparse.ArgumentParser(description="Process video/audio......") - + parser.add_argument("--input_path", help="path to the input files", required=True) parser.add_argument("--output_path", help="path to the raw and derived variable output", required=True) parser.add_argument("--dbm_group", help="list of feature groups", nargs='+') - + args = parser.parse_args() s_config = config_reader.ConfigReader() r_config = config_raw_feature.ConfigRawReader() d_config = config_derive_feature.ConfigDeriveReader() - + _, file_ext = os.path.splitext(os.path.basename(args.input_path)) - + if file_ext: + #add check for mov and mp3 here input_type = 'file' - if file_ext.lower() == '.mp4': + + if file_ext.lower() in ['.mp4','mov']: + if file_ext.lower() == '.mov': + convert_file(args.input_path) process_raw_video_file(args, s_config, r_config) - elif file_ext.lower() == '.wav': + elif file_ext.lower() in ['.wav','.mp3']: + if file_ext.lower() == '.mp3': + convert_file(args.input_path) process_raw_audio_file(args, s_config, r_config) - + else: - logger.error('No WAV or MP4 files detected in input path') + logger.error('No WAV/MP3 or MOV/MP4 files detected in input path') else: input_type = 'dir' process_raw_video_dir(args, s_config, r_config) process_raw_audio_dir(args, s_config, r_config) - + process_derive(args, r_config, d_config, input_type) exec_time = time.time() - start_time - logger.info('Done! Processing time: {} seconds'.format(exec_time)) \ No newline at end of file + logger.info('Done! Processing time: {} seconds'.format(exec_time)) From d260d7c0558324879bc4a4ef03ee2ff3d6c427e3 Mon Sep 17 00:00:00 2001 From: Vidya Koesmahargyo Date: Tue, 1 Dec 2020 09:55:23 -0500 Subject: [PATCH 2/3] fixed libraries --- process_data.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/process_data.py b/process_data.py index cd5e4e1c..116ef1b0 100644 --- a/process_data.py +++ b/process_data.py @@ -15,6 +15,8 @@ import argparse import logging import glob import time +import subprocess +from os.path import splitext logging.basicConfig(level=logging.INFO) logger=logging.getLogger() @@ -187,7 +189,7 @@ if __name__=="__main__": #add check for mov and mp3 here input_type = 'file' - if file_ext.lower() in ['.mp4','mov']: + if file_ext.lower() in ['.mp4','.mov']: if file_ext.lower() == '.mov': convert_file(args.input_path) process_raw_video_file(args, s_config, r_config) From 3b4d3b5e476e9dafcdca1648db228e31731988ad Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Thu, 10 Dec 2020 15:42:58 +0000 Subject: [PATCH 3/3] .mov conversion successul --- process_data.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/process_data.py b/process_data.py index 116ef1b0..39486b8c 100644 --- a/process_data.py +++ b/process_data.py @@ -151,7 +151,7 @@ def convert_file(input_filepath): if file_ext == '.mov': output_filepath = fname + '.mp4' logger.info('Converting video from {} to mp4'.format(input_filepath)) - call = ['ffmpeg', '-i', input_filepath, output_filepath] + call = ['ffmpeg', '-i', input_filepath, '-vcodec', 'h264','-acodec','aac', '-strict', '-2', output_filepath] subprocess.check_output(call) @@ -186,7 +186,6 @@ if __name__=="__main__": _, file_ext = os.path.splitext(os.path.basename(args.input_path)) if file_ext: - #add check for mov and mp3 here input_type = 'file' if file_ext.lower() in ['.mp4','.mov']: