video_converter.compressor のソースコード

"""動画を圧縮するモジュール。

ffmpeg の CRF (Constant Rate Factor) を指定して動画を再エンコードする。
"""

import os

import ffmpeg

from video_converter.paths import resolve_io_paths


[ドキュメント] def compress( input_path: str | os.PathLike, output_path: str | os.PathLike = "", crf: int = 23, ) -> ffmpeg.nodes.Node: """動画を圧縮 :param input_path: 動画のファイルパス :param output_path: 圧縮後の動画のファイルパス (省略した場合は、元のファイル名に"_compressed"を付加) :param crf: 圧縮後の動画品質 (低いほうが品質が高い) :return: 圧縮後の動画のパイプライン。出力先が既に存在する場合は上書きする :raises FileNotFoundError: 入力パスがファイルとして存在しない場合 :raises ValueError: 入力パスと出力パスが同一のファイルを指す場合 """ input_path, output_path = resolve_io_paths( input_path, output_path, default_suffix=".mp4", default_stem_suffix="_compressed", ) # Adjust the `crf` value for video quality (lower value means higher quality) pipeline = ( ffmpeg.input(str(input_path)) .output(str(output_path), crf=crf) .overwrite_output() ) return pipeline