diff --git a/removeads.py b/removeads.py index c45ac86..9a7f3af 100755 --- a/removeads.py +++ b/removeads.py @@ -7,7 +7,7 @@ from datetime import datetime,timedelta,time import coloredlogs, logging from functools import cmp_to_key from subprocess import Popen, PIPE -from os import read, write, lseek, pipe, set_inheritable, memfd_create, SEEK_SET, close, unlink +from os import read, write, lseek, pipe, set_inheritable, memfd_create, SEEK_SET, close, unlink, fstat, ftruncate import os.path from io import BytesIO, TextIOWrapper import json @@ -190,7 +190,7 @@ def getFormat(ffprobe, inputFile): logger = logging.getLogger(__name__) infd = inputFile.fileno() - inputFile.seek(0,0) + lseek(infd, 0, SEEK_SET) set_inheritable(infd, True) with Popen([ffprobe, '-loglevel', 'quiet', '-show_format', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: out, _ = ffprobe.communicate() @@ -206,7 +206,7 @@ def getStreams(ffprobe, inputFile): logger = logging.getLogger(__name__) infd = inputFile.fileno() - inputFile.seek(0,0) + lseek(infd, 0, SEEK_SET) set_inheritable(infd, True) with Popen([ffprobe, '-loglevel', 'quiet', '-show_streams', '-of', 'json', '-i', '/proc/self/fd/%d' % infd], stdout=PIPE, close_fds=False) as ffprobe: out, _ = ffprobe.communicate() @@ -483,10 +483,10 @@ def extractMKVPart(mkvmerge, inputFile, outputFile, begin, end): logger = logging.getLogger(__name__) logger.info('Extract video between I-frames at %s and %s' % (begin,end)) - inputFile.seek(0,0) - outputFile.seek(0,0) infd = inputFile.fileno() outfd = outputFile.fileno() + lseek(infd, 0, SEEK_SET) + lseek(outfd, 0, SEEK_SET) set_inheritable(infd, True) set_inheritable(outfd, True) warnings = [] @@ -518,8 +518,9 @@ def extractMKVPart(mkvmerge, inputFile, outputFile, begin, end): def extractPictures(ffmpeg, inputFile, begin, nbFrames, width=640, height=480): logger = logging.getLogger(__name__) - inputFile.seek(0,0) + infd = inputFile.fileno() + lseek(infd, 0, SEEK_SET) outfd = memfd_create('pictures', flags=0) set_inheritable(outfd, True) # PPM header @@ -549,9 +550,9 @@ def extractPictures(ffmpeg, inputFile, begin, nbFrames, width=640, height=480): def extractSound(ffmpeg, inputFile, begin, outputFileName, packetDuration, subChannel=0, nbPackets=0, sampleRate=48000, nbChannels=2): logger = logging.getLogger(__name__) - inputFile.seek(0,0) outfd = memfd_create(outputFileName, flags=0) infd = inputFile.fileno() + lseek(infd, 0, SEEK_SET) set_inheritable(infd, True) set_inheritable(outfd, True) sound = bytes()