| from ..common.Common import * | |
| from ..common.Execute import * | |
| class Ffmpeg: | |
| def add_input(self, input_files, start_time_code = "", end_time_code = "", duration_time_code = ""): | |
| if start_time_code != "": | |
| self.command += " -ss " + start_time_code | |
| if duration_time_code != "": | |
| self.command += " -t " + duration_time_code | |
| if end_time_code != "": | |
| self.command += " -to " + end_time_code | |
| if len(input_files) == 1: | |
| input_file = input_files[0] | |
| AssertFileExists(input_file) | |
| self.command += " -i " + input_file | |
| else: | |
| self.command += " -f concat -safe 0" | |
| echo_command = "" | |
| for input_file in input_files: | |
| AssertFileExists(input_file) | |
| echo_command = echo_command + " echo file '" + input_file + "'; " | |
| self.command += " -i " + "<(" + echo_command + ")" | |
| def set_output(self, output_file, audio_channels, audio_sample_rate, output_format = ""): | |
| if audio_channels > 0: | |
| self.command += " -ac " + str(audio_channels) | |
| if audio_sample_rate > 0: | |
| self.command += " -ar " + str(audio_sample_rate) | |
| if output_format != "": | |
| self.command += " -f " + output_format | |
| self.command += " " + output_file | |
| self.output_file = output_file | |
| def set_audio_filter(self, audio_filter): | |
| if audio_filter != "": | |
| self.command += " -filter_complex " + audio_filter | |
| def __init__(self, log_level = "info"): | |
| self.command = "ffmpeg -y -hide_banner -loglevel level+info" | |
| if log_level != "": | |
| self.command += " -loglevel level+" + log_level | |
| self.command_output = "" | |
| def Command(self): | |
| return self.command | |
| def Execute(self): | |
| _, self.command_output, _ = ExecuteCommand(self.command) | |
| if self.output_file != "/dev/null": | |
| AssertFileExists(self.output_file) | |
| return self.command_output | |