diff --git a/config.py b/config.py index e57a9f6..e3bbea5 100644 --- a/config.py +++ b/config.py @@ -4,7 +4,7 @@ import os.path # [danmaku] # exec -DANMU_ASS_EXEC = "danmu2ass" +DANMAKU_FACTORY_EXEC = "DanmakuFactory" # speed DANMAKU_SPEED = 12 # font @@ -47,8 +47,8 @@ def load_config(): config.read("config.ini", encoding="utf-8") if config.has_section("danmaku"): section = config['danmaku'] - global DANMU_ASS_EXEC, DANMAKU_SPEED, DEFAULT_FONT_NAME, VIDEO_RESOLUTION - DANMU_ASS_EXEC = section.get('exec', DANMU_ASS_EXEC) + global DANMAKU_FACTORY_EXEC, DANMAKU_SPEED, DEFAULT_FONT_NAME, VIDEO_RESOLUTION + DANMAKU_FACTORY_EXEC = section.get('exec', DANMAKU_FACTORY_EXEC) DANMAKU_SPEED = section.getfloat('speed', DANMAKU_SPEED) DEFAULT_FONT_NAME = section.get('font', DEFAULT_FONT_NAME) VIDEO_RESOLUTION = section.get('resolution', VIDEO_RESOLUTION) @@ -81,7 +81,7 @@ def load_config(): def get_config(): config = { 'danmaku': { - 'exec': DANMU_ASS_EXEC, + 'exec': DANMAKU_FACTORY_EXEC, 'speed': DANMAKU_SPEED, 'font': DEFAULT_FONT_NAME, 'resolution': VIDEO_RESOLUTION, diff --git a/controller/api/collector_blueprint.py b/controller/api/collector_blueprint.py index 51255f6..5759c2e 100644 --- a/controller/api/collector_blueprint.py +++ b/controller/api/collector_blueprint.py @@ -4,7 +4,7 @@ import platform import psutil from flask import Blueprint, jsonify -from config import DANMU_ASS_EXEC, FFMPEG_EXEC, BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY, VIDEO_OUTPUT_DIR +from config import DANMAKU_FACTORY_EXEC, FFMPEG_EXEC, BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY, VIDEO_OUTPUT_DIR from util.system import check_exec blueprint = Blueprint("api_collector", __name__, url_prefix="/api/collector") @@ -59,7 +59,7 @@ def collect_basic_status(): }, 'exec': { 'ffmpeg': check_exec(FFMPEG_EXEC), - 'danmaku': check_exec(DANMU_ASS_EXEC), + 'danmaku': check_exec(DANMAKU_FACTORY_EXEC), }, 'system': { 'os': platform.system(), diff --git a/workflow/danmaku.py b/workflow/danmaku.py index 5c8964b..f54895b 100644 --- a/workflow/danmaku.py +++ b/workflow/danmaku.py @@ -7,7 +7,7 @@ from typing import Union from bs4 import BeautifulSoup -from config import DANMU_ASS_EXEC, VIDEO_RESOLUTION, DANMAKU_SPEED, DEFAULT_FONT_NAME +from config import DANMAKU_FACTORY_EXEC, VIDEO_RESOLUTION, DANMAKU_SPEED, DEFAULT_FONT_NAME from exception.danmaku import NoDanmakuException, DanmakuFormatErrorException from util.file import check_file_exist @@ -34,11 +34,12 @@ def diff_danmaku_files(base_file: Union[os.PathLike[str], str], file: Union[os.P def danmaku_to_subtitle(file: Union[os.PathLike[str], str], time_shift: float): new_subtitle_name = md5(file.encode("utf-8")).hexdigest() + ".ass" - (_w, _h) = VIDEO_RESOLUTION.split("x") process = subprocess.Popen(( - DANMU_ASS_EXEC, "--force", "-a", "0.9", "-d", str(DANMAKU_SPEED), "--font", str(DEFAULT_FONT_NAME), - "--font-size", "40", "--lane-size", "40", "--width", _w, "--height", _h, "-o", new_subtitle_name, - "-p", "1", "--time-offset", str(time_shift), "--width-ratio", "1", file + DANMAKU_FACTORY_EXEC, "--ignore-warnings", + "-r", str(VIDEO_RESOLUTION), "-s", str(DANMAKU_SPEED), "-f", "5", + "-S", "40", "-N", str(DEFAULT_FONT_NAME), "--showmsgbox", "FALSE", + "-O", "255", "-L", "1", "-D", "0", + "-o", "ass", new_subtitle_name, "-i", file, "-t", str(time_shift) )) process.wait() return new_subtitle_name