More settings to allow verbose for ffmpg
This commit is contained in:
@@ -263,9 +263,25 @@ Examples:
|
|||||||
dest="search_max",
|
dest="search_max",
|
||||||
help="For pexels --search: maximum number of videos to download (default: 200)",
|
help="For pexels --search: maximum number of videos to download (default: 200)",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--ffmpeg-log",
|
||||||
|
type=str,
|
||||||
|
default=None,
|
||||||
|
dest="ffmpeg_log",
|
||||||
|
choices=["quiet", "error", "warning", "info", "verbose", "debug", "trace"],
|
||||||
|
help="Stream FFmpeg output at this -loglevel (e.g. 'verbose', 'debug') instead of the quiet progress bar",
|
||||||
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
# FFmpeg log verbosity for every ffmpeg run: an explicit --ffmpeg-log level
|
||||||
|
# wins; otherwise -v turns on verbose streaming.
|
||||||
|
from .preprocessor import set_ffmpeg_verbose, set_ffmpeg_loglevel
|
||||||
|
if args.ffmpeg_log:
|
||||||
|
set_ffmpeg_loglevel(args.ffmpeg_log)
|
||||||
|
elif args.verbose:
|
||||||
|
set_ffmpeg_verbose(True)
|
||||||
|
|
||||||
# Resolve project path (optional for 'pexels --search')
|
# Resolve project path (optional for 'pexels --search')
|
||||||
action = args.action
|
action = args.action
|
||||||
if args.project is None:
|
if args.project is None:
|
||||||
|
|||||||
+21
-14
@@ -305,28 +305,35 @@ def ensure_proxy_files_exist(
|
|||||||
import selectors, time, sys, subprocess
|
import selectors, time, sys, subprocess
|
||||||
|
|
||||||
|
|
||||||
# Module-level FFmpeg verbosity switch. When enabled (e.g. via `gnommo -v`),
|
# Module-level FFmpeg log level. None → the quiet progress-bar path (-loglevel
|
||||||
# run_ffmpeg_with_progress streams FFmpeg's full output at -loglevel verbose
|
# warning). A level string (e.g. "verbose", "debug") → stream FFmpeg's full
|
||||||
# instead of the quiet progress bar — useful when debugging filter graphs.
|
# output live instead of the bar — useful when debugging filter graphs.
|
||||||
_FFMPEG_VERBOSE = False
|
_FFMPEG_LOGLEVEL: Optional[str] = None
|
||||||
|
|
||||||
|
|
||||||
def set_ffmpeg_verbose(enabled: bool) -> None:
|
def set_ffmpeg_verbose(enabled: bool) -> None:
|
||||||
"""Enable/disable verbose FFmpeg logging for every ffmpeg run in this process."""
|
"""Turn on (verbose) / off streamed FFmpeg logging for every run in this process."""
|
||||||
global _FFMPEG_VERBOSE
|
global _FFMPEG_LOGLEVEL
|
||||||
_FFMPEG_VERBOSE = bool(enabled)
|
_FFMPEG_LOGLEVEL = "verbose" if enabled else None
|
||||||
|
|
||||||
|
|
||||||
def run_ffmpeg_with_progress(cmd, duration, description="Processing", verbose=None, loglevel=None):
|
def set_ffmpeg_loglevel(level: Optional[str]) -> None:
|
||||||
|
"""Set an explicit FFmpeg -loglevel (info/verbose/debug/trace…) and stream its
|
||||||
|
output; pass None to restore the quiet progress bar."""
|
||||||
|
global _FFMPEG_LOGLEVEL
|
||||||
|
_FFMPEG_LOGLEVEL = level
|
||||||
|
|
||||||
|
|
||||||
|
def run_ffmpeg_with_progress(cmd, duration, description="Processing", loglevel=None):
|
||||||
cmd = cmd.copy()
|
cmd = cmd.copy()
|
||||||
|
|
||||||
if verbose is None:
|
# Explicit call arg wins, else the module-level setting, else the quiet bar.
|
||||||
verbose = _FFMPEG_VERBOSE
|
level = loglevel if loglevel is not None else _FFMPEG_LOGLEVEL
|
||||||
level = loglevel or ("verbose" if verbose else "warning")
|
stream = level is not None
|
||||||
|
|
||||||
# Verbose mode: stream FFmpeg's full output live (no progress bar), still
|
# Streamed mode: show FFmpeg's full output live (no progress bar), still
|
||||||
# capturing it so the error path keeps the full log.
|
# capturing it so the error path keeps the full log.
|
||||||
if verbose:
|
if stream:
|
||||||
insert_pos = cmd.index("-y") + 1 if "-y" in cmd else 1
|
insert_pos = cmd.index("-y") + 1 if "-y" in cmd else 1
|
||||||
cmd[insert_pos:insert_pos] = ["-loglevel", level, "-stats"]
|
cmd[insert_pos:insert_pos] = ["-loglevel", level, "-stats"]
|
||||||
print(f" {description} — FFmpeg (-loglevel {level}):")
|
print(f" {description} — FFmpeg (-loglevel {level}):")
|
||||||
@@ -349,7 +356,7 @@ def run_ffmpeg_with_progress(cmd, duration, description="Processing", verbose=No
|
|||||||
"pipe:1",
|
"pipe:1",
|
||||||
"-nostats",
|
"-nostats",
|
||||||
"-loglevel",
|
"-loglevel",
|
||||||
level,
|
"warning",
|
||||||
]
|
]
|
||||||
|
|
||||||
p = subprocess.Popen(
|
p = subprocess.Popen(
|
||||||
|
|||||||
Reference in New Issue
Block a user