5
0

yt_common: better audio handling

This commit is contained in:
louis f 2021-06-05 18:57:50 -04:00
parent 75a0d3b2aa
commit 62c8355fb1
Signed by: louis
GPG Key ID: 44D7E1DE4E23D6F2
23 changed files with 190 additions and 122 deletions

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00006.m2ts"), (24, -50)) FileTrim(os.path.join(BDMV, "00006.m2ts"), (24, -50))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
from lvsfunc.types import Range from lvsfunc.types import Range
@ -14,9 +15,9 @@ from typing import List
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00007.m2ts"), (None, -49)) FileTrim(os.path.join(BDMV, "00007.m2ts"), (None, -49))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
from lvsfunc.types import Range from lvsfunc.types import Range
@ -14,9 +15,9 @@ from typing import List
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00008.m2ts"), (None, -50)) FileTrim(os.path.join(BDMV, "00008.m2ts"), (None, -50))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00009.m2ts"), (None, -51)) FileTrim(os.path.join(BDMV, "00009.m2ts"), (None, -51))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00010.m2ts"), (None, -24)) FileTrim(os.path.join(BDMV, "00010.m2ts"), (None, -24))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00011.m2ts"), (24, -25)) FileTrim(os.path.join(BDMV, "00011.m2ts"), (24, -25))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00006.m2ts"), (24, -50)) FileTrim(os.path.join(BDMV, "00006.m2ts"), (24, -50))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00007.m2ts"), (None, -51)) FileTrim(os.path.join(BDMV, "00007.m2ts"), (None, -51))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00008.m2ts"), (None, -50)) FileTrim(os.path.join(BDMV, "00008.m2ts"), (None, -50))
) )

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.chapters import Chapter, Edition from yt_common.chapters import Chapter, Edition
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource([ SOURCE: TenSuraS2BDSource = TenSuraS2BDSource([
FileTrim(os.path.join(BDMV, "00009.m2ts"), (None, None)), FileTrim(os.path.join(BDMV, "00009.m2ts"), (None, None)),
FileTrim(os.path.join(BDMV, "00010.m2ts"), (None, -49)), FileTrim(os.path.join(BDMV, "00010.m2ts"), (None, -49)),
FileTrim(os.path.join(BDMV, "00016.m2ts"), (13348, 15699)), FileTrim(os.path.join(BDMV, "00016.m2ts"), (13348, 15699)),

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter, Edition from yt_common.chapters import Chapter, Edition
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -15,9 +16,9 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource([ SOURCE: TenSuraS2BDSource = TenSuraS2BDSource([
FileTrim(os.path.join(BDMV, "00011.m2ts"), (None, -49)), FileTrim(os.path.join(BDMV, "00011.m2ts"), (None, -49)),
FileTrim(os.path.join(BDMV, "00017.m2ts"), (None, 3158)), FileTrim(os.path.join(BDMV, "00017.m2ts"), (None, 3158)),
FileTrim(os.path.join(BDMV, "00017.m2ts"), (33342, 33927)), FileTrim(os.path.join(BDMV, "00017.m2ts"), (33342, 33927)),

View File

@ -1,10 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -14,10 +15,11 @@ from typing import List, Tuple
import os import os
EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0])) EPNUM: int = int(os.path.basename(os.path.splitext(__file__)[0]))
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(EPNUM) CONFIG: TenSuraS2Config = TenSuraS2Config(EPNUM)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00012.m2ts"), (None, -26)) FileTrim(os.path.join(BDMV, "00012.m2ts"), (None, -26))
) )

View File

@ -1,9 +1,10 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -14,9 +15,9 @@ from typing import List, Tuple
import os import os
DESC: str = os.path.basename(os.path.splitext(__file__)[0]) DESC: str = os.path.basename(os.path.splitext(__file__)[0])
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(DESC) CONFIG: TenSuraS2Config = TenSuraS2Config(DESC)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00015.m2ts"), (24, -24)) FileTrim(os.path.join(BDMV, "00015.m2ts"), (24, -24))
) )

View File

@ -1,9 +1,10 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import TenSuraS2BDConfig, antialias, deband, denoise, descale, edgefix, finalize, regrain from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband,
denoise, descale, edgefix, finalize, regrain)
from yt_common.automation import SelfRunner from yt_common.automation import SelfRunner
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -14,9 +15,9 @@ from typing import List, Tuple
import os import os
DESC: str = os.path.basename(os.path.splitext(__file__)[0]) DESC: str = os.path.basename(os.path.splitext(__file__)[0])
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(DESC) CONFIG: TenSuraS2Config = TenSuraS2Config(DESC)
BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210526][Tensei Shitara Slime Datta Ken 2nd Season][Vol.2]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00014.m2ts"), (24, -24)) FileTrim(os.path.join(BDMV, "00014.m2ts"), (24, -24))
) )

View File

@ -1,11 +1,11 @@
import vapoursynth as vs import vapoursynth as vs
from tensura_common import (TenSuraS2BDConfig, antialias, deband, denoise, descale, from tensura_common import (TenSuraS2Config, TenSuraS2BDSource, antialias, deband, denoise, descale,
edgefix, finalize, megurumono_scenefilter, regrain) edgefix, finalize, megurumono_scenefilter, regrain)
from yt_common.automation import SelfRunner, Zone from yt_common.automation import SelfRunner, Zone
from yt_common.chapters import Chapter from yt_common.chapters import Chapter
from yt_common.source import FileTrim, SimpleSource from yt_common.source import FileTrim
from lvsfunc.mask import BoundingBox from lvsfunc.mask import BoundingBox
from lvsfunc.misc import replace_ranges from lvsfunc.misc import replace_ranges
@ -16,9 +16,9 @@ from typing import List, Tuple
import os import os
DESC: str = os.path.basename(os.path.splitext(__file__)[0]) DESC: str = os.path.basename(os.path.splitext(__file__)[0])
CONFIG: TenSuraS2BDConfig = TenSuraS2BDConfig(DESC) CONFIG: TenSuraS2Config = TenSuraS2Config(DESC)
BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM" BDMV: str = "../bdmv/[BDMV][210326][Tensei Shitara Slime Datta Ken 2nd Season][Vol.1]/BDMV/STREAM"
SOURCE: SimpleSource = SimpleSource( SOURCE: TenSuraS2BDSource = TenSuraS2BDSource(
FileTrim(os.path.join(BDMV, "00013.m2ts"), (24, -24)) FileTrim(os.path.join(BDMV, "00013.m2ts"), (24, -24))
) )

View File

@ -1,3 +1,4 @@
from .config import TenSuraS2Config, TenSuraS2BDConfig, TenSuraS1BDConfig # noqa: F401 from .config import (TenSuraS2Config, TenSuraS2Source, TenSuraS2BDSource, # noqa: F401
TenSuraS1BDConfig, TenSuraS1BDSource)
from .filter import (antialias, deband, denoise, descale, edgefix, finalize, # noqa: F401 from .filter import (antialias, deband, denoise, descale, edgefix, finalize, # noqa: F401
megurumono_scenefilter, regrain) megurumono_scenefilter, regrain)

View File

@ -1,6 +1,8 @@
from yt_common.config import Config, FlacMixin, OpusMixin from yt_common.audio import AudioStream, CodecPassthrough, CodecOpus, CodecFlac
from yt_common.config import Config
from yt_common.source import SimpleSource
from typing import Union from typing import List, Union
import os import os
@ -8,7 +10,7 @@ RESOLUTION: int = 1080
DATAPATH: str = os.path.dirname(__file__) DATAPATH: str = os.path.dirname(__file__)
class TenSuraS1BDConfig(OpusMixin, Config): class TenSuraS1BDConfig(Config):
def __init__(self, desc: Union[str, int]) -> None: def __init__(self, desc: Union[str, int]) -> None:
super().__init__( super().__init__(
desc, desc,
@ -19,6 +21,11 @@ class TenSuraS1BDConfig(OpusMixin, Config):
) )
class TenSuraS1BDSource(SimpleSource):
def audio_streams(self) -> List[AudioStream]:
return [AudioStream(0, CodecOpus())]
class TenSuraS2Config(Config): class TenSuraS2Config(Config):
def __init__(self, desc: Union[str, int]) -> None: def __init__(self, desc: Union[str, int]) -> None:
super().__init__( super().__init__(
@ -30,5 +37,11 @@ class TenSuraS2Config(Config):
) )
class TenSuraS2BDConfig(FlacMixin, TenSuraS2Config): class TenSuraS2Source(SimpleSource):
pass def audio_streams(self) -> List[AudioStream]:
return [AudioStream(0, CodecPassthrough())]
class TenSuraS2BDSource(SimpleSource):
def audio_streams(self) -> List[AudioStream]:
return [AudioStream(0, CodecFlac())]

View File

@ -1 +1 @@
from . import antialiasing, automation, chapters, config, data, deband, logging, scale, source # noqa: F401 from . import antialiasing, audio, automation, chapters, config, data, deband, logging, scale, source # noqa: F401

View File

@ -0,0 +1,65 @@
from abc import ABC, abstractmethod
from subprocess import call
from typing import List, NamedTuple
from .util import get_temp_filename
class AudioEncoder(ABC):
@abstractmethod
def encode_audio(self, afile: str) -> str:
pass
class FFAudio(AudioEncoder):
def encode_audio(self, afile: str) -> str:
out = get_temp_filename(prefix="_ffaudio_encode_", suffix=".mka")
ffmpeg_args = [
"ffmpeg",
"-hide_banner", "-loglevel", "panic",
"-i", afile,
"-y",
"-map", "0:a",
] + self.codec_args() + [out]
print("+ " + " ".join(ffmpeg_args))
call(ffmpeg_args)
return out
@abstractmethod
def codec_args(self) -> List[str]:
pass
class CodecPassthrough(AudioEncoder):
def encode_audio(self, afile: str) -> str:
return afile
class CodecOpus(FFAudio):
bitrate: int
def __init__(self, bitrate: int = 192) -> None:
self.bitrate = bitrate
def codec_args(self) -> List[str]:
return ["-c:a", "libopus", "-b:a", f"{self.bitrate}k", "-sample_fmt", "s16"]
class CodecFdkAac(FFAudio):
bitrate: int
def __init__(self, bitrate: int = 256) -> None:
self.bitrate = bitrate
def codec_args(self) -> List[str]:
return ["-c:a", "libfdk_aac", "-b:a", f"{self.bitrate}k", "-sample_fmt", "s16"]
class CodecFlac(FFAudio):
def codec_args(self) -> List[str]:
return ["-c:a", "flac"]
class AudioStream(NamedTuple):
stream_index: int # zero-indexed, ignores video streams
codec: AudioEncoder

View File

@ -7,7 +7,6 @@ import random
import shutil import shutil
import string import string
import subprocess import subprocess
import tempfile
from lvsfunc.render import clip_async_render, find_scene_changes from lvsfunc.render import clip_async_render, find_scene_changes
@ -16,6 +15,7 @@ from typing import Any, BinaryIO, Callable, List, NamedTuple, Optional, Sequence
from .chapters import Chapter, Edition, make_chapters, make_qpfile from .chapters import Chapter, Edition, make_chapters, make_qpfile
from .config import Config from .config import Config
from .logging import log from .logging import log
from .util import get_temp_filename
from .source import FileSource from .source import FileSource
core = vs.core core = vs.core
@ -23,10 +23,6 @@ core = vs.core
AUDIO_PFX: str = "_audiogetter_temp_" AUDIO_PFX: str = "_audiogetter_temp_"
def get_temp_filename(prefix: str = "", suffix: str = "") -> str:
return f"{prefix}{next(tempfile._get_candidate_names())}{suffix}" # type: ignore
def bin_to_plat(binary: str) -> str: def bin_to_plat(binary: str) -> str:
if os.name == "nt": if os.name == "nt":
return binary if binary.lower().endswith(".exe") else f"{binary}.exe" return binary if binary.lower().endswith(".exe") else f"{binary}.exe"
@ -153,27 +149,40 @@ class AudioGetter():
self.cleanup = set() self.cleanup = set()
def trim_audio(self, ftrim: Optional[acsuite.types.Trim] = None) -> str: def trim_audio(self, ftrim: Optional[acsuite.types.Trim] = None) -> str:
streams = sorted(self.src.audio_streams(), key=lambda s: s.stream_index)
if len(streams) == 0:
return ""
trims = self.src.audio_src() trims = self.src.audio_src()
ffmpeg = acsuite.ffmpeg.FFmpegAudio()
tlist: List[str] = [] tlist: List[str] = []
for t in trims: for t in trims:
audio_cut = acsuite.eztrim(t.path, t.trim or (0, None), ref_clip=self.src.audio_ref(), audio_cut = acsuite.eztrim(t.path, t.trim or (0, None), ref_clip=self.src.audio_ref(),
outfile=get_temp_filename(prefix=AUDIO_PFX, suffix=".mka"), outfile=get_temp_filename(prefix=AUDIO_PFX+"cut_", suffix=".mka"),
streams=0)[0] streams=[s.stream_index for s in streams])[0]
self.cleanup.add(audio_cut) self.cleanup.add(audio_cut)
tlist.append(audio_cut) tlist.append(audio_cut)
if len(tlist) > 1: if len(tlist) > 1:
ffmpeg = acsuite.ffmpeg.FFmpegAudio()
audio_cut = ffmpeg.concat(*tlist) audio_cut = ffmpeg.concat(*tlist)
self.cleanup.add(audio_cut) self.cleanup.add(audio_cut)
if ftrim: if ftrim:
audio_cut = acsuite.eztrim(audio_cut, ftrim, ref_clip=self.src.source(), audio_cut = acsuite.eztrim(audio_cut, ftrim, ref_clip=self.src.source(),
outfile=get_temp_filename(prefix=AUDIO_PFX, suffix=".mka"))[0] outfile=get_temp_filename(prefix=AUDIO_PFX+"fcut_", suffix=".mka"))[0]
self.cleanup.add(audio_cut) self.cleanup.add(audio_cut)
audio_cut = self.config.encode_audio(audio_cut) if len(streams) > 1:
splits = [get_temp_filename(prefix=AUDIO_PFX+"split_", suffix=".mka") for _ in range(0, len(streams))]
ffmpeg.split(audio_cut, splits)
self.cleanup |= set(splits)
encode = [streams[i].codec.encode_audio(f) for i, f in enumerate(splits)]
self.cleanup |= set(encode)
audio_cut = get_temp_filename(prefix=AUDIO_PFX+"join_", suffix=".mka")
ffmpeg.join(audio_cut, *encode)
else:
audio_cut = streams[0].codec.encode_audio(audio_cut)
self.cleanup.add(audio_cut) self.cleanup.add(audio_cut)
return audio_cut return audio_cut

View File

@ -1,8 +1,6 @@
import os import os
import subprocess
from abc import ABC, abstractmethod from typing import Union
from typing import List, Union
class Config(): class Config():
@ -23,45 +21,3 @@ class Config():
fname = filename.format(epnum=self.desc, title=self.title, fname = filename.format(epnum=self.desc, title=self.title,
title_long=self.title_long, resolution=self.resolution) title_long=self.title_long, resolution=self.resolution)
return os.path.join(f"../{self.desc}/", fname) return os.path.join(f"../{self.desc}/", fname)
def encode_audio(self, afile: str) -> str:
return afile # default: passthrough
class AudioEncoder(ABC):
@abstractmethod
def encode_audio(self, afile: str) -> str:
pass
class FFAudio(AudioEncoder):
def encode_audio(self, afile: str) -> str:
ffmpeg_args = [
"ffmpeg",
"-hide_banner", "-loglevel", "panic",
"-i", afile,
"-y",
"-map", "0:a",
] + self.codec_args() + ["_ffaudio_encode.mka"]
print("+ " + " ".join(ffmpeg_args))
subprocess.call(ffmpeg_args)
return "_ffaudio_encode.mka"
@abstractmethod
def codec_args(self) -> List[str]:
pass
class OpusMixin(FFAudio):
def codec_args(self) -> List[str]:
return ["-c:a", "libopus", "-b:a", "192k", "-sample_fmt", "s16"]
class FdkAacMixin(FFAudio):
def codec_args(self) -> List[str]:
return ["-c:a", "libfdk_aac", "-b:a", "256k", "-sample_fmt", "s16"]
class FlacMixin(FFAudio):
def codec_args(self) -> List[str]:
return ["-c:a", "flac"]

View File

@ -12,6 +12,7 @@ import os
from abc import ABC, abstractmethod from abc import ABC, abstractmethod
from typing import Any, List, NamedTuple, Optional, Tuple, Union from typing import Any, List, NamedTuple, Optional, Tuple, Union
from .audio import AudioStream, CodecPassthrough
from .config import Config from .config import Config
from .logging import log from .logging import log
@ -74,6 +75,9 @@ class FileSource(ABC):
def audio_src(self) -> List[FileTrim]: def audio_src(self) -> List[FileTrim]:
pass pass
def audio_streams(self) -> List[AudioStream]:
return [AudioStream(0, CodecPassthrough())] # default: passthrough first stream
@abstractmethod @abstractmethod
def source(self) -> vs.VideoNode: def source(self) -> vs.VideoNode:
pass pass

View File

@ -0,0 +1,5 @@
import tempfile
def get_temp_filename(prefix: str = "", suffix: str = "") -> str:
return f"{prefix}{next(tempfile._get_candidate_names())}{suffix}" # type: ignore