diff --git a/scenedetect/cli/__init__.py b/scenedetect/cli/__init__.py index 51b028d8..af3add07 100644 --- a/scenedetect/cli/__init__.py +++ b/scenedetect/cli/__init__.py @@ -582,7 +582,7 @@ def list_scenes_command(ctx, output, filename, no_output_file, quiet): 'Override codec arguments/options passed to FFmpeg when splitting and re-encoding' ' scenes. Use double quotes (") around specified arguments. Must specify at least' ' audio/video codec to use (e.g. -a "-c:v [...] and -c:a [...]"). [default:' - ' "-c:v libx264 -preset veryfast -crf 22 -c:a copy"]') + ' "-c:v libx264 -preset veryfast -crf 22 -c:a aac"]') @click.option( '--quiet', '-q', is_flag=True, flag_value=True, help= @@ -637,7 +637,7 @@ def split_video_command(ctx, output, filename, high_quality, override_args, quie rate_factor = 22 if not high_quality else 17 if preset is None: preset = 'veryfast' if not high_quality else 'slow' - override_args = ('-c:v libx264 -preset {PRESET} -crf {RATE_FACTOR} -c:a copy'.format( + override_args = ('-c:v libx264 -preset {PRESET} -crf {RATE_FACTOR} -c:a aac'.format( PRESET=preset, RATE_FACTOR=rate_factor)) if not copy: logging.info('FFmpeg codec args set: %s', override_args) diff --git a/scenedetect/frame_timecode.py b/scenedetect/frame_timecode.py index a295e36e..44eaad10 100644 --- a/scenedetect/frame_timecode.py +++ b/scenedetect/frame_timecode.py @@ -214,6 +214,15 @@ def get_timecode(self, precision=3, use_rounding=True): # Return hours, minutes, and seconds as a formatted timecode string. return '%02d:%02d:%s' % (hrs, mins, secs) + def previous_frame(self): + # type: () -> FrameTimecode + """ + Returns a new FrameTimecode for the frame before this one. + :return: New FrameTimeCode object, one frame earlier + """ + new_timecode = FrameTimecode(self) + new_timecode.frame_num -= 1 + return new_timecode def _seconds_to_frames(self, seconds): # type: (float) -> int diff --git a/scenedetect/video_splitter.py b/scenedetect/video_splitter.py index ed08ad41..cf5082a8 100644 --- a/scenedetect/video_splitter.py +++ b/scenedetect/video_splitter.py @@ -174,7 +174,7 @@ def split_video_mkvmerge(input_video_paths, scene_list, output_file_prefix, def split_video_ffmpeg(input_video_paths, scene_list, output_file_template, video_name, - arg_override='-c:v libx264 -preset fast -crf 21 -c:a copy', + arg_override='-c:v libx264 -preset fast -crf 21 -c:a aac', hide_progress=False, suppress_output=False): # type: (List[str], List[Tuple[FrameTimecode, FrameTimecode]], Optional[str], # Optional[str], Optional[bool]) -> None @@ -229,13 +229,12 @@ def split_video_ffmpeg(input_video_paths, scene_list, output_file_template, vide '-ss', str(start_time.get_seconds()), '-i', - input_video_paths[0]] + input_video_paths[0], + '-t', + str(duration.get_seconds()) + ] call_list += arg_override call_list += [ - '-strict', - '-2', - '-t', - str(duration.get_seconds()), '-sn', filename_template.safe_substitute( VIDEO_NAME=video_name,