FIX: maps codecs names and ffmpeg encoders correctly

This commit was merged in pull request #11.
This commit is contained in:
2026-08-28 15:41:21 +05:00
parent 3533525df0
commit 8e0d345ba7
2 changed files with 23 additions and 4 deletions
+3
View File
@@ -67,6 +67,9 @@ CODEC_INFO = [
CODEC_TO_CONTAINER_MAP = {codec['name']: codec['recommended_container'] for codec in CODEC_INFO} CODEC_TO_CONTAINER_MAP = {codec['name']: codec['recommended_container'] for codec in CODEC_INFO}
CODEC_TO_EXTENSION_MAP = {codec['name']: codec['recommended_extension'] for codec in CODEC_INFO} CODEC_TO_EXTENSION_MAP = {codec['name']: codec['recommended_extension'] for codec in CODEC_INFO}
# Map codec name → FFmpeg encoder name
CODEC_NAME_TO_FFMPEG = {codec['name']: codec['ffmpeg'] for codec in CODEC_INFO}
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
# Video codec support per container (legacy, will be superseded by compatibility matrix) # Video codec support per container (legacy, will be superseded by compatibility matrix)
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
+20 -4
View File
@@ -6,7 +6,11 @@ import subprocess
import sys import sys
from typing import List, Dict, Any from typing import List, Dict, Any
from .constants import FORMAT_INFO, CODEC_TO_EXTENSION_MAP from .constants import (
FORMAT_INFO,
CODEC_TO_EXTENSION_MAP,
CODEC_NAME_TO_FFMPEG, # <-- Add this
)
from .ffmpeg import ( from .ffmpeg import (
get_audio_duration, get_audio_duration,
get_stream_info, get_stream_info,
@@ -192,6 +196,18 @@ def split_audio(input_file: str, output_directory: str, tracks: List[Dict[str, A
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# 8d. Build and execute FFmpeg command # 8d. Build and execute FFmpeg command
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
# Map codec names to FFmpeg encoder names
audio_enc = args.audio_codec
if audio_enc != 'copy':
audio_enc = CODEC_NAME_TO_FFMPEG.get(audio_enc, audio_enc) # fallback to itself if not found
video_enc = args.video_codec
if video_enc != 'copy':
video_enc = CODEC_NAME_TO_FFMPEG.get(video_enc, video_enc)
subtitle_enc = args.subtitle_codec
if subtitle_enc != 'copy':
subtitle_enc = CODEC_NAME_TO_FFMPEG.get(subtitle_enc, subtitle_enc)
# Then build command with these mapped encoders
cmd = build_ffmpeg_command( cmd = build_ffmpeg_command(
input_file=input_file, input_file=input_file,
start_seconds=start_seconds, start_seconds=start_seconds,
@@ -199,9 +215,9 @@ def split_audio(input_file: str, output_directory: str, tracks: List[Dict[str, A
output_path=output_path, output_path=output_path,
stream_info=stream_info, stream_info=stream_info,
format_opt=output_container, format_opt=output_container,
audio_codec=args.audio_codec, audio_codec=audio_enc,
video_codec=args.video_codec, video_codec=video_enc,
subtitle_codec=args.subtitle_codec, subtitle_codec=subtitle_enc,
metadata=metadata, metadata=metadata,
cover_image_path=cover_image_path, cover_image_path=cover_image_path,
video_quality=getattr(args, 'video_quality', None), video_quality=getattr(args, 'video_quality', None),