From a13f732321b6d80da99f75efba7aae92a778e3bf Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 8 Dec 2022 12:54:59 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BD=BF=E7=94=A8QP=E4=BD=9C=E4=B8=BA=E7=A0=81?= =?UTF-8?q?=E7=8E=87=E6=8E=A7=E5=88=B6=E7=AD=96=E7=95=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.py | 15 +++++++-------- workflow/video.py | 9 ++++----- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/config.py b/config.py index 41dadd6..0ff4feb 100644 --- a/config.py +++ b/config.py @@ -28,10 +28,10 @@ FFMPEG_USE_NVIDIA_GPU = False FFMPEG_USE_INTEL_GPU = False # vaapi FFMPEG_USE_VAAPI = False -# bitrate -VIDEO_BITRATE = "2.5M" # gop -VIDEO_GOP = 60 +VIDEO_GOP = 30 +# qp +VIDEO_QP = 28 # [video] # enabled VIDEO_ENABLED = False @@ -94,15 +94,14 @@ def load_config(): VIDEO_CLIP_OVERFLOW_SEC = section.getfloat('overflow_sec', VIDEO_CLIP_OVERFLOW_SEC) if config.has_section("ffmpeg"): section = config['ffmpeg'] - global FFMPEG_EXEC, FFMPEG_USE_HEVC, FFMPEG_USE_NVIDIA_GPU, FFMPEG_USE_INTEL_GPU, VIDEO_BITRATE, \ - VIDEO_GOP, FFMPEG_USE_VAAPI + global FFMPEG_EXEC, FFMPEG_USE_HEVC, FFMPEG_USE_NVIDIA_GPU, FFMPEG_USE_INTEL_GPU, VIDEO_QP, VIDEO_GOP, FFMPEG_USE_VAAPI FFMPEG_EXEC = section.get('exec', FFMPEG_EXEC) FFMPEG_USE_HEVC = section.getboolean('hevc', FFMPEG_USE_HEVC) FFMPEG_USE_NVIDIA_GPU = section.getboolean('nvidia_gpu', FFMPEG_USE_NVIDIA_GPU) FFMPEG_USE_INTEL_GPU = section.getboolean('intel_gpu', FFMPEG_USE_INTEL_GPU) FFMPEG_USE_VAAPI = section.getboolean('vaapi', FFMPEG_USE_VAAPI) - VIDEO_BITRATE = section.get('bitrate', VIDEO_BITRATE) - VIDEO_GOP = section.getfloat('gop', VIDEO_GOP) + VIDEO_GOP = section.getint('gop', VIDEO_GOP) + VIDEO_QP = section.getint('qp', VIDEO_QP) if config.has_section("recorder"): global BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY, VIDEO_OUTPUT_DIR section = config['recorder'] @@ -140,7 +139,7 @@ def get_config(): 'nvidia_gpu': FFMPEG_USE_NVIDIA_GPU, 'intel_gpu': FFMPEG_USE_INTEL_GPU, 'vaapi': FFMPEG_USE_VAAPI, - 'bitrate': VIDEO_BITRATE, + 'qp': VIDEO_QP, 'gop': VIDEO_GOP, }, 'recorder': { diff --git a/workflow/video.py b/workflow/video.py index cbb88f1..45268c0 100644 --- a/workflow/video.py +++ b/workflow/video.py @@ -3,9 +3,9 @@ import subprocess from datetime import datetime, timedelta from typing import IO -from config import FFMPEG_EXEC, FFMPEG_USE_HEVC, VIDEO_BITRATE, FFMPEG_USE_NVIDIA_GPU, VIDEO_CLIP_EACH_SEC, \ +from config import FFMPEG_EXEC, FFMPEG_USE_HEVC, FFMPEG_USE_NVIDIA_GPU, VIDEO_CLIP_EACH_SEC, \ VIDEO_CLIP_OVERFLOW_SEC, \ - FFMPEG_USE_INTEL_GPU, VIDEO_OUTPUT_DIR, VIDEO_GOP, FFMPEG_USE_VAAPI + FFMPEG_USE_INTEL_GPU, VIDEO_OUTPUT_DIR, VIDEO_GOP, VIDEO_QP, FFMPEG_USE_VAAPI from . import LOGGER @@ -216,7 +216,6 @@ def quick_split_video(file): "-ss", str(current_sec), "-i", file, "-c:v", "copy", "-c:a", "copy", "-f", "mp4", "-t", str(VIDEO_CLIP_EACH_SEC + VIDEO_CLIP_OVERFLOW_SEC), - "-fflags", "+genpts", "-shortest", "-movflags", "faststart", os.path.join(VIDEO_OUTPUT_DIR, "{}.mp4".format(current_dt)) ], stdout=subprocess.PIPE) handle_ffmpeg_output(split_process.stdout) @@ -237,8 +236,8 @@ def _common_ffmpeg_setting(): def _common_ffmpeg_params(): return ( - "-f", "mp4", "-b:v", VIDEO_BITRATE, "-c:a", "aac", + "-f", "mp4", "-c:a", "copy", "-preset:v", "fast", "-profile:v", "main", "-avoid_negative_ts", "1", - "-qmin", "18", "-qmax", "38", "-g:v", str(VIDEO_GOP), + "-qp", str(VIDEO_QP), "-g:v", str(VIDEO_GOP), "-fflags", "+genpts", "-shortest" )