video-stabilizer / video_stabilizer.py
smellslikeml
initial commit
b3a923c
import ffmpeg
from transformers import Tool
class VideoStabilizationTool(Tool):
name = "video_stabilization_tool"
description = """
This tool stabilizes a video.
Inputs are input_path, output_path, smoothing, zoom.
Output is the output_path.
"""
inputs = ["text", "text", "text", "text", "text"]
outputs = ["text"]
def __call__(
self,
input_path: str,
output_path: str,
smoothing: str = "10",
zoom: str = "0",
shakiness: str = "5",
):
(
ffmpeg.input(input_path)
.output("null", vf="vidstabdetect=shakiness={}".format(int(shakiness)), f="null")
.overwrite_output()
.run(capture_stdout=True, capture_stderr=True)
)
(
ffmpeg.input(input_path)
.output(
output_path,
vf="vidstabtransform=smoothing={}:zoom={}:input={}".format(
int(smoothing), int(zoom), "transforms.trf"
),
)
.overwrite_output()
.run()
)
return output_path