Update generate_keyframes.py
* Remove most dependencies
This commit is contained in:
parent
cd7dd63761
commit
c807f9ca9e
|
@ -1,17 +1,41 @@
|
|||
#!/usr/bin/env python
|
||||
"""
|
||||
Generic script to generate keyframes for all files of a given extension using kagefunc's generate_keyframes function.
|
||||
|
||||
Dependencies:
|
||||
* VapourSynth
|
||||
* wwxd (https://github.com/dubhater/vapoursynth-wwxd)
|
||||
"""
|
||||
import glob
|
||||
import argparse
|
||||
import os
|
||||
import vapoursynth as vs
|
||||
import kagefunc as kgf
|
||||
import fvsfunc as fvf
|
||||
core = vs.core
|
||||
|
||||
|
||||
def generate_keyframes():
|
||||
# Slightly modified from kagefunc to remove some dependencies
|
||||
def generate_keyframes(clip: vs.VideoNode, out_path=None) -> None:
|
||||
"""
|
||||
probably only useful for fansubbing
|
||||
generates qp-filename for keyframes to simplify timing
|
||||
"""
|
||||
import os
|
||||
clip = core.resize.Bilinear(clip, 640, 360) # speed up the analysis by resizing first
|
||||
clip = core.wwxd.WWXD(clip)
|
||||
out_txt = "# WWXD log file, using qpfile format\n\n"
|
||||
for i in range(clip.num_frames):
|
||||
if clip.get_frame(i).props.Scenechange == 1:
|
||||
out_txt += "%d I -1\n" % i
|
||||
if i % 1000 == 0:
|
||||
print(i)
|
||||
if out_path is None:
|
||||
out_path = os.path.expanduser("~") + "/Desktop/keyframes.txt"
|
||||
text_file = open(out_path, "w")
|
||||
text_file.write(out_txt)
|
||||
text_file.close()
|
||||
|
||||
|
||||
def main():
|
||||
if args.recursive:
|
||||
files = glob.glob('**/*', recursive=True)
|
||||
else:
|
||||
|
@ -29,8 +53,8 @@ def generate_keyframes():
|
|||
src = core.lsmas.LWLibavSource(f)
|
||||
else:
|
||||
src = core.ffms2.Source(f)
|
||||
src = fvf.Depth(src, 8)
|
||||
kgf.generate_keyframes(src, os.path.abspath(f"{f}_keyframes.txt"))
|
||||
src = core.resize.Point(src, format=vs.YUV420P8, dither_type='error_diffusion')
|
||||
generate_keyframes(src, os.path.abspath(f"{f}_keyframes.txt"))
|
||||
if f.endswith(".m2ts"):
|
||||
try:
|
||||
os.remove(f"{f}.lwi")
|
||||
|
@ -50,4 +74,4 @@ if __name__ == "__main__":
|
|||
help="check recursively", action="store_true")
|
||||
parser.add_argument("-E", "--extension", help="pick extension to generate keyframes for")
|
||||
args = parser.parse_args()
|
||||
generate_keyframes()
|
||||
main()
|
||||
|
|
Loading…
Reference in a new issue