More linting: no more camelcase for function names.

This commit is contained in:
Frédéric Tronel
2025-10-29 14:54:42 +01:00
parent 367cb440d8
commit 40ca3e136b

View File

@@ -18,6 +18,7 @@ from dataclasses import dataclass, field
from math import floor, ceil, log from math import floor, ceil, log
from io import BytesIO, TextIOWrapper from io import BytesIO, TextIOWrapper
import json import json
from typing import IO
# Third party libraries # Third party libraries
import coloredlogs import coloredlogs
@@ -353,7 +354,7 @@ class SupportedFormat(IntEnum):
# -report -loglevel 0 -f null - # -report -loglevel 0 -f null -
# Found codec private data using mkvinfo # Found codec private data using mkvinfo
def get_codec_private_data_from_mkv(mkvinfo_path, inputFile): def get_codec_private_data_from_mkv(mkvinfo_path, inputFile: IO[bytes]):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -1581,7 +1582,8 @@ def get_avc_config_from_h264(inputFile):
return avcconfig return avcconfig
def getCodecPrivateDataFromH264(inputFile): # Unused ?
def get_codec_private_data_from_h264(inputFile):
avcconfig = get_avc_config_from_h264(inputFile) avcconfig = get_avc_config_from_h264(inputFile)
res = dump_codec_private_data(avcconfig) res = dump_codec_private_data(avcconfig)
@@ -1717,7 +1719,7 @@ def dump_codec_private_data(AVCDecoderConfiguration):
return res return res
def changeEBMLElementSize(inputFile, position, addendum): def change_ebml_element_size(inputFile, position, addendum):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
initial_position = position initial_position = position
@@ -1809,7 +1811,7 @@ def changeEBMLElementSize(inputFile, position, addendum):
# We return the potential increase in size of the file if the length field had to be increased. # We return the potential increase in size of the file if the length field had to be increased.
return delta return delta
def changeCodecPrivateData(mkvinfo, inputFile, codecData): def change_codec_private_data(mkvinfo, inputFile, codecData):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -1878,9 +1880,9 @@ def changeCodecPrivateData(mkvinfo, inputFile, codecData):
# Changing an element can increase its size (in very rare case). # Changing an element can increase its size (in very rare case).
# In that case, we update the new delta that will be larger (because the element has # In that case, we update the new delta that will be larger (because the element has
# been resized). # been resized).
delta+=changeEBMLElementSize(inputFile, pos, delta) delta+=change_ebml_element_size(inputFile, pos, delta)
def getFormat(ffprobe_path, inputFile): def get_format(ffprobe_path:str, inputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -1898,7 +1900,7 @@ def getFormat(ffprobe_path, inputFile):
return None return None
def getMovieDuration(ffprobe_path, inputFile): def get_movie_duration(ffprobe_path:str, inputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -1918,7 +1920,7 @@ def getMovieDuration(ffprobe_path, inputFile):
return None return None
# ffprobe -loglevel quiet -select_streams v:0 -show_entries stream=width,height -of json sample.ts # ffprobe -loglevel quiet -select_streams v:0 -show_entries stream=width,height -of json sample.ts
def getVideoDimensions(ffprobe_path, inputFile): def get_video_dimensions(ffprobe_path, inputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -1955,7 +1957,7 @@ def get_streams(ffprobe_path, inputFile):
return None return None
def withSubtitles(ffprobe_path, inputFile): def with_subtitles(ffprobe_path, inputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -2016,7 +2018,7 @@ def parse_timestamp(ts):
return ts return ts
def parseTimeInterval(interval): def parse_time_interval(interval):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
interval_reg_exp = (r'^(?P<hour1>[0-9]{1,2}):(?P<minute1>[0-9]{1,2}):(?P<second1>[0-9]{1,2})' interval_reg_exp = (r'^(?P<hour1>[0-9]{1,2}):(?P<minute1>[0-9]{1,2}):(?P<second1>[0-9]{1,2})'
@@ -2089,7 +2091,7 @@ def parseTimeInterval(interval):
return (ts1, ts2) return (ts1, ts2)
def compareTimeInterval(interval1, interval2): def compare_time_interval(interval1, interval2):
ts11,ts12 = interval1 ts11,ts12 = interval1
ts21,ts22 = interval2 ts21,ts22 = interval2
@@ -2103,8 +2105,8 @@ def compareTimeInterval(interval1, interval2):
def ffmpeg_convert(ffmpeg_path, ffprobe_path, inputFile, inputFormat, outputFile, outputFormat, duration): def ffmpeg_convert(ffmpeg_path, ffprobe_path, inputFile, inputFormat, outputFile, outputFormat, duration):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
width, height = getVideoDimensions(ffprobe_path, inputFile) width, height = get_video_dimensions(ffprobe_path, inputFile)
subtitles = withSubtitles(ffprobe_path, inputFile) subtitles = with_subtitles(ffprobe_path, inputFile)
infd = inputFile.fileno() infd = inputFile.fileno()
outfd = outputFile.fileno() outfd = outputFile.fileno()
@@ -2144,7 +2146,7 @@ def ffmpeg_convert(ffmpeg_path, ffprobe_path, inputFile, inputFormat, outputFile
if status != 0: if status != 0:
logger.error('Conversion failed with status code: %d', status) logger.error('Conversion failed with status code: %d', status)
def getTSFrame(frame): def get_ts_frame(frame):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if 'pts_time' in frame: if 'pts_time' in frame:
@@ -2158,7 +2160,7 @@ def getTSFrame(frame):
ts = timedelta(seconds=pts_time) ts = timedelta(seconds=pts_time)
return ts return ts
def getPacketDuration(packet): def get_packet_duration(packet):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
if 'duration' in packet: if 'duration' in packet:
@@ -2171,7 +2173,7 @@ def getPacketDuration(packet):
return duration return duration
def getFramesInStream(ffprobe_path, inputFile, begin, end, streamKind, subStreamId=0): def get_frames_in_stream(ffprobe_path, inputFile, begin, end, streamKind, subStreamId=0):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
set_inheritable(infd, True) set_inheritable(infd, True)
@@ -2194,7 +2196,7 @@ def getFramesInStream(ffprobe_path, inputFile, begin, end, streamKind, subStream
if 'frames' in frames: if 'frames' in frames:
frames = frames['frames'] frames = frames['frames']
for frame in frames: for frame in frames:
ts = getTSFrame(frame) ts = get_ts_frame(frame)
if ts is None: if ts is None:
return None return None
if begin <= ts <= end: if begin <= ts <= end:
@@ -2210,7 +2212,7 @@ def getFramesInStream(ffprobe_path, inputFile, begin, end, streamKind, subStream
return None return None
# TODO: Finish implementation of this function and use it. # TODO: Finish implementation of this function and use it.
def getNearestIDRFrame(ffprobe_path, inputFile, timestamp, before=True, delta=timedelta(seconds=2)): def get_nearest_idr_frame(ffprobe_path, inputFile, timestamp, before=True, delta=timedelta(seconds=2)):
# pylint: disable=W0613 # pylint: disable=W0613
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -2241,7 +2243,7 @@ def getNearestIDRFrame(ffprobe_path, inputFile, timestamp, before=True, delta=ti
if 'frames' in frames: if 'frames' in frames:
frames = frames['frames'] frames = frames['frames']
for frame in frames: for frame in frames:
ts = getTSFrame(frame) ts = get_ts_frame(frame)
if ts is None: if ts is None:
return None return None
if tbegin <= ts <= tend: if tbegin <= ts <= tend:
@@ -2251,7 +2253,7 @@ def getNearestIDRFrame(ffprobe_path, inputFile, timestamp, before=True, delta=ti
tbegin, tend) tbegin, tend)
return None return None
def getNearestIFrame(ffprobe_path, inputFile, timestamp, before=True, deltaMax=timedelta(seconds=15)): def get_nearest_iframe(ffprobe_path, inputFile, timestamp, before=True, deltaMax=timedelta(seconds=15)):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -2274,7 +2276,7 @@ def getNearestIFrame(ffprobe_path, inputFile, timestamp, before=True, deltaMax=t
tbegin = zero tbegin = zero
logger.debug('Looking for an iframe in [%s, %s]', tbegin, tend) logger.debug('Looking for an iframe in [%s, %s]', tbegin, tend)
frames = getFramesInStream(ffprobe_path, inputFile=inputFile, begin=tbegin, end=tend, frames = get_frames_in_stream(ffprobe_path, inputFile=inputFile, begin=tbegin, end=tend,
streamKind='v') streamKind='v')
if frames is None: if frames is None:
logger.debug('Found no frame in [%s, %s]', tbegin, tend) logger.debug('Found no frame in [%s, %s]', tbegin, tend)
@@ -2288,7 +2290,7 @@ def getNearestIFrame(ffprobe_path, inputFile, timestamp, before=True, deltaMax=t
found = False found = False
for frame in iframes: for frame in iframes:
ts = getTSFrame(frame) ts = get_ts_frame(frame)
if ts is None: if ts is None:
logger.warning('I-frame with no timestamp: %s', frame) logger.warning('I-frame with no timestamp: %s', frame)
continue continue
@@ -2309,10 +2311,10 @@ def getNearestIFrame(ffprobe_path, inputFile, timestamp, before=True, deltaMax=t
continue continue
if iframe is not None: if iframe is not None:
its = getTSFrame(iframe) its = get_ts_frame(iframe)
nb_frames = 0 nb_frames = 0
for frame in frames: for frame in frames:
ts = getTSFrame(frame) ts = get_ts_frame(frame)
if ts is None: if ts is None:
logger.warning('Frame without timestamp: %s', frame) logger.warning('Frame without timestamp: %s', frame)
continue continue
@@ -2331,7 +2333,7 @@ def getNearestIFrame(ffprobe_path, inputFile, timestamp, before=True, deltaMax=t
return(nb_frames, iframe) return(nb_frames, iframe)
def extractMKVPart(mkvmerge_path, inputFile, outputFile, begin, end): def extract_mkv_part(mkvmerge_path, inputFile, outputFile, begin, end):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.info('Extract video between I-frames at %s and %s', begin,end) logger.info('Extract video between I-frames at %s and %s', begin,end)
@@ -2372,7 +2374,7 @@ def extractMKVPart(mkvmerge_path, inputFile, outputFile, begin, end):
elif status == 2: elif status == 2:
logger.error('Extraction returns errors') logger.error('Extraction returns errors')
def extractPictures(ffmpeg_path, inputFile, begin, nbFrames, width=640, height=480): def extract_pictures(ffmpeg_path, inputFile, begin, nbFrames, width=640, height=480):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -2408,7 +2410,7 @@ def extractPictures(ffmpeg_path, inputFile, begin, nbFrames, width=640, height=4
lseek(outfd, 0, SEEK_SET) lseek(outfd, 0, SEEK_SET)
return images, outfd return images, outfd
def extractSound(ffmpeg_path, inputFile, begin, outputFileName, packet_duration, subChannel=0, def extract_sound(ffmpeg_path, inputFile, begin, outputFileName, packet_duration, subChannel=0,
nb_packets=0, sample_rate=48000, nb_channels=2): nb_packets=0, sample_rate=48000, nb_channels=2):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -2443,7 +2445,7 @@ def extractSound(ffmpeg_path, inputFile, begin, outputFileName, packet_duration,
return sound, outfd return sound, outfd
def dumpPPM(pictures, prefix, temporaries): def dump_ppm(pictures, prefix, temporaries):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# "P6\nWIDTH HEIGHT\n255\n" # "P6\nWIDTH HEIGHT\n255\n"
@@ -2490,7 +2492,7 @@ def dumpPPM(pictures, prefix, temporaries):
logger.error('Impossible to create file: %s', filename) logger.error('Impossible to create file: %s', filename)
def extractAllStreams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams, filesPrefix, nbFrames, def extract_all_streams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams, filesPrefix, nbFrames,
framerate, width, height, temporaries, dumpMemFD=False): framerate, width, height, temporaries, dumpMemFD=False):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -2550,7 +2552,7 @@ def extractAllStreams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams,
logger.warning('Missing DAR adjustment for: %s', dar) logger.warning('Missing DAR adjustment for: %s', dar)
logger.warning('Missing treatment for chroma location: %s', chroma_location) logger.warning('Missing treatment for chroma location: %s', chroma_location)
codec = stream['codec_name'] codec = stream['codec_name']
images_bytes, memfd = extractPictures(ffmpeg_path, inputFile=inputFile, begin=begin, images_bytes, memfd = extract_pictures(ffmpeg_path, inputFile=inputFile, begin=begin,
nbFrames=nbFrames, width=width, height=height) nbFrames=nbFrames, width=width, height=height)
if images_bytes is None: if images_bytes is None:
logger.error('Impossible to extract picture from video stream.') logger.error('Impossible to extract picture from video stream.')
@@ -2558,7 +2560,7 @@ def extractAllStreams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams,
memfds.append(memfd) memfds.append(memfd)
if dumpMemFD: if dumpMemFD:
dumpPPM(images_bytes, f'{filesPrefix}-{video_id:d}', temporaries) dump_ppm(images_bytes, f'{filesPrefix}-{video_id:d}', temporaries)
# We rewind to zero the memory file descriptor # We rewind to zero the memory file descriptor
lseek(memfd, 0, SEEK_SET) lseek(memfd, 0, SEEK_SET)
@@ -2587,12 +2589,12 @@ def extractAllStreams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams,
if 'language' in stream['tags']: if 'language' in stream['tags']:
generic_codec_params.extend([f'-metadata:s:a:{audio_id:d}', generic_codec_params.extend([f'-metadata:s:a:{audio_id:d}',
f"language={stream['tags']['language']}"]) f"language={stream['tags']['language']}"])
packets = getFramesInStream(ffprobe_path, inputFile=inputFile, begin=begin, end=end, packets = get_frames_in_stream(ffprobe_path, inputFile=inputFile, begin=begin, end=end,
streamKind='a', subStreamId=audio_id) streamKind='a', subStreamId=audio_id)
nb_packets = len(packets) nb_packets = len(packets)
logger.debug("Found %d packets to be extracted from audio track.", nb_packets) logger.debug("Found %d packets to be extracted from audio track.", nb_packets)
if nb_packets > 0: if nb_packets > 0:
packet_duration = getPacketDuration(packets[0]) packet_duration = get_packet_duration(packets[0])
if packet_duration is None: if packet_duration is None:
return None return None
else: else:
@@ -2601,7 +2603,7 @@ def extractAllStreams(ffmpeg_path, ffprobe_path, inputFile, begin, end, streams,
logger.info("Extracting %d packets of audio stream: a:%d" , nb_packets, audio_id) logger.info("Extracting %d packets of audio stream: a:%d" , nb_packets, audio_id)
tmpname = f'{filesPrefix}-{audio_id:d}.pcm' tmpname = f'{filesPrefix}-{audio_id:d}.pcm'
sound_bytes, memfd = extractSound(ffmpeg_path=ffmpeg_path, inputFile=inputFile, begin=begin, sound_bytes, memfd = extract_sound(ffmpeg_path=ffmpeg_path, inputFile=inputFile, begin=begin,
nb_packets=nb_packets, nb_packets=nb_packets,
packet_duration=packet_duration, packet_duration=packet_duration,
outputFileName=tmpname, sample_rate=sample_rate, outputFileName=tmpname, sample_rate=sample_rate,
@@ -2808,7 +2810,7 @@ def merge_mkvs(mkvmerge_path, inputs, outputName, concatenate=True, timestamps=N
return out return out
def findSubtitlesTracks(ffprobe_path, inputFile): def find_subtitles_tracks(ffprobe_path:str, inputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
infd = inputFile.fileno() infd = inputFile.fileno()
@@ -2873,7 +2875,7 @@ def extract_track_from_mkv(mkvextract_path, inputFile, index, outputFile, timest
else: else:
logger.info('Track %d was succesfully extracted.', index) logger.info('Track %d was succesfully extracted.', index)
def removeVideoTracksFromMKV(mkvmerge_path, inputFile, outputFile): def remove_video_tracks_from_mkv(mkvmerge_path, inputFile, outputFile):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
outfd = outputFile.fileno() outfd = outputFile.fileno()
@@ -2909,7 +2911,7 @@ def removeVideoTracksFromMKV(mkvmerge_path, inputFile, outputFile):
else: else:
logger.info('Video tracks were succesfully extracted.') logger.info('Video tracks were succesfully extracted.')
def remuxSRTSubtitles(mkvmerge_path, inputFile, outputFileName, subtitles): def remux_srt_subtitles(mkvmerge_path, inputFile, outputFileName, subtitles):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
try: try:
@@ -2957,7 +2959,7 @@ def remuxSRTSubtitles(mkvmerge_path, inputFile, outputFileName, subtitles):
elif status == 2: elif status == 2:
logger.error('Remux subtitles returns errors') logger.error('Remux subtitles returns errors')
def concatenateH264Parts(h264parts, output): def concatenate_h264_parts(h264parts, output):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
total_length = 0 total_length = 0
@@ -2984,7 +2986,7 @@ def concatenateH264Parts(h264parts, output):
pb.update(nb_bytes) pb.update(nb_bytes)
pos += nb_bytes pos += nb_bytes
def concatenateH264TSParts(h264TSParts, output): def concatenate_h264_ts_parts(h264TSParts, output):
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
header = '# timestamp format v2\n' header = '# timestamp format v2\n'
@@ -3029,7 +3031,7 @@ def do_coarse_processing(ffmpeg_path, ffprobe_path, mkvmerge_path, inputFile, be
exit(-1) exit(-1)
# Extract internal part of MKV # Extract internal part of MKV
extractMKVPart(mkvmerge_path=mkvmerge_path, inputFile=inputFile, outputFile=internal_mkv, begin=begin, extract_mkv_part(mkvmerge_path=mkvmerge_path, inputFile=inputFile, outputFile=internal_mkv, begin=begin,
end=end) end=end)
temporaries.append(internal_mkv) temporaries.append(internal_mkv)
@@ -3091,14 +3093,14 @@ def main():
parts=[] parts=[]
# Parse each interval # Parse each interval
for interval in intervals: for interval in intervals:
ts1, ts2 = parseTimeInterval(interval) ts1, ts2 = parse_time_interval(interval)
if ts1 is None or ts2 is None: if ts1 is None or ts2 is None:
logger.error("Illegal time interval: %s", interval) logger.error("Illegal time interval: %s", interval)
exit(-1) exit(-1)
parts.append((ts1,ts2)) parts.append((ts1,ts2))
# Sort intervals # Sort intervals
parts.sort(key=cmp_to_key(compareTimeInterval)) parts.sort(key=cmp_to_key(compare_time_interval))
# Check that no intervals are overlapping # Check that no intervals are overlapping
prevts = timedelta(0) prevts = timedelta(0)
@@ -3122,7 +3124,7 @@ def main():
logger.error("Impossible to open %s", args.input_file) logger.error("Impossible to open %s", args.input_file)
exit(-1) exit(-1)
format_of_file = getFormat(paths['ffprobe'], input_file) format_of_file = get_format(paths['ffprobe'], input_file)
if format_of_file is None: if format_of_file is None:
exit(-1) exit(-1)
@@ -3262,14 +3264,14 @@ def main():
partnum = partnum + 1 partnum = partnum + 1
# Get the nearest I-frame whose timestamp is greater or equal to the beginning. # Get the nearest I-frame whose timestamp is greater or equal to the beginning.
head_frames = getNearestIFrame(paths['ffprobe'], mkv, ts1, before=False) head_frames = get_nearest_iframe(paths['ffprobe'], mkv, ts1, before=False)
if head_frames is None: if head_frames is None:
logger.error('Impossible to retrieve I-frame') logger.error('Impossible to retrieve I-frame')
exit(-1) exit(-1)
# Get the nearest I-frame whose timestamp ... # Get the nearest I-frame whose timestamp ...
# TODO: wrong here ... # TODO: wrong here ...
tail_frames = getNearestIFrame(paths['ffprobe'], mkv, ts2, before=True) tail_frames = get_nearest_iframe(paths['ffprobe'], mkv, ts2, before=True)
if tail_frames is None: if tail_frames is None:
logger.error('Impossible to retrieve I-frame') logger.error('Impossible to retrieve I-frame')
exit(-1) exit(-1)
@@ -3282,10 +3284,10 @@ def main():
logger.info("Found %d frames between last I-frame and end of current part", logger.info("Found %d frames between last I-frame and end of current part",
nb_tail_frames) nb_tail_frames)
head_iframe_ts = getTSFrame(head_iframe) head_iframe_ts = get_ts_frame(head_iframe)
if head_iframe_ts is None: if head_iframe_ts is None:
exit(-1) exit(-1)
tail_iframe_ts = getTSFrame(tail_iframe) tail_iframe_ts = get_ts_frame(tail_iframe)
if tail_iframe_ts is None: if tail_iframe_ts is None:
exit(-1) exit(-1)
@@ -3312,7 +3314,7 @@ def main():
if (not args.coarse) and (nb_head_frames > args.threshold): if (not args.coarse) and (nb_head_frames > args.threshold):
# We extract all frames between the beginning upto the frame that immediately preceeds # We extract all frames between the beginning upto the frame that immediately preceeds
# the I-frame. # the I-frame.
h264_head, h264_head_ts, mkv_head = extractAllStreams(ffmpeg_path=paths['ffmpeg'], h264_head, h264_head_ts, mkv_head = extract_all_streams(ffmpeg_path=paths['ffmpeg'],
ffprobe_path=paths['ffprobe'], ffprobe_path=paths['ffprobe'],
inputFile=mkv, begin=ts1, inputFile=mkv, begin=ts1,
end=head_iframe_ts, end=head_iframe_ts,
@@ -3370,7 +3372,7 @@ def main():
# logger.info('Merge header, middle and trailer subpart into: %s' % internal_mkv_name) # logger.info('Merge header, middle and trailer subpart into: %s' % internal_mkv_name)
# Extract internal part of MKV # Extract internal part of MKV
extractMKVPart(mkvmerge_path=paths['mkvmerge'], inputFile=mkv, outputFile=internal_mkv, extract_mkv_part(mkvmerge_path=paths['mkvmerge'], inputFile=mkv, outputFile=internal_mkv,
begin=head_iframe_ts, end=tail_iframe_ts) begin=head_iframe_ts, end=tail_iframe_ts)
# Extract video stream of internal part as a raw H264 and its timestamps. # Extract video stream of internal part as a raw H264 and its timestamps.
@@ -3380,7 +3382,7 @@ def main():
# Remove video track from internal part of MKV # Remove video track from internal part of MKV
logger.info('Remove video track from %s', internal_mkv_name) logger.info('Remove video track from %s', internal_mkv_name)
removeVideoTracksFromMKV(mkvmerge_path=paths['mkvmerge'], inputFile=internal_mkv, remove_video_tracks_from_mkv(mkvmerge_path=paths['mkvmerge'], inputFile=internal_mkv,
outputFile=internal_novideo_mkv) outputFile=internal_novideo_mkv)
temporaries.append(internal_mkv) temporaries.append(internal_mkv)
@@ -3394,7 +3396,7 @@ def main():
if (not args.coarse) and (nb_tail_frames > args.threshold): if (not args.coarse) and (nb_tail_frames > args.threshold):
# We extract all frames between the I-frame (including it) upto the end. # We extract all frames between the I-frame (including it) upto the end.
h264_tail, h264_tail_ts, mkv_tail = extractAllStreams(ffmpeg_path=paths['ffmpeg'], h264_tail, h264_tail_ts, mkv_tail = extract_all_streams(ffmpeg_path=paths['ffmpeg'],
ffprobe_path=paths['ffprobe'], ffprobe_path=paths['ffprobe'],
inputFile=mkv, begin=tail_iframe_ts, inputFile=mkv, begin=tail_iframe_ts,
end=ts2, nbFrames=nb_tail_frames, end=ts2, nbFrames=nb_tail_frames,
@@ -3439,7 +3441,7 @@ def main():
exit(-1) exit(-1)
logger.info('Merging all H264 tracks') logger.info('Merging all H264 tracks')
concatenateH264Parts(h264parts=h264parts, output=full_h264) concatenate_h264_parts(h264parts=h264parts, output=full_h264)
temporaries.append(full_h264) temporaries.append(full_h264)
try: try:
@@ -3449,7 +3451,7 @@ def main():
exit(-1) exit(-1)
logger.info('Merging H264 timestamps') logger.info('Merging H264 timestamps')
concatenateH264TSParts(h264TSParts=h264_ts, output=full_h264_ts) concatenate_h264_ts_parts(h264TSParts=h264_ts, output=full_h264_ts)
temporaries.append(full_h264_ts) temporaries.append(full_h264_ts)
final_novideo_name = f'{basename}-novideo.mkv' final_novideo_name = f'{basename}-novideo.mkv'
@@ -3483,7 +3485,7 @@ def main():
final_codec_private_data = dump_codec_private_data(main_avc_config) final_codec_private_data = dump_codec_private_data(main_avc_config)
logger.debug('Final codec private data: %s', hexdump.dump(final_codec_private_data, sep=':')) logger.debug('Final codec private data: %s', hexdump.dump(final_codec_private_data, sep=':'))
logger.info('Changing codec private data with the new one.') logger.info('Changing codec private data with the new one.')
changeCodecPrivateData(paths['mkvinfo'], final_with_video, final_codec_private_data) change_codec_private_data(paths['mkvinfo'], final_with_video, final_codec_private_data)
if args.srt: if args.srt:
if not all_optional_tools: if not all_optional_tools:
@@ -3492,11 +3494,11 @@ def main():
else: else:
# Final cut is not any more the final step. # Final cut is not any more the final step.
temporaries.append(final_with_video) temporaries.append(final_with_video)
duration = getMovieDuration(paths['ffprobe'], final_with_video) duration = get_movie_duration(paths['ffprobe'], final_with_video)
supported_langs = get_tesseract_supported_lang(paths['tesseract']) supported_langs = get_tesseract_supported_lang(paths['tesseract'])
logger.info('Supported lang: %s', supported_langs) logger.info('Supported lang: %s', supported_langs)
logger.info('Find subtitles tracks and language.') logger.info('Find subtitles tracks and language.')
subtitles = findSubtitlesTracks(paths['ffprobe'], final_with_video) subtitles = find_subtitles_tracks(paths['ffprobe'], final_with_video)
logger.info(subtitles) logger.info(subtitles)
sts = {} sts = {}
for subtitle in subtitles: for subtitle in subtitles:
@@ -3539,7 +3541,7 @@ def main():
logger.info(ocr) logger.info(ocr)
# Remux SRT subtitles # Remux SRT subtitles
remuxSRTSubtitles(paths['mkvmerge'], final_with_video, args.outputFile, ocr) remux_srt_subtitles(paths['mkvmerge'], final_with_video, args.outputFile, ocr)
else: else:
copyfile(final_with_video_name, args.outputFile) copyfile(final_with_video_name, args.outputFile)
else: else: