Expand description
Subtitle format conversion command implementation.
This module provides comprehensive subtitle format conversion capabilities, transforming subtitle files between different standards while preserving timing information, styling, and encoding. It supports both single file and batch directory processing with intelligent format detection.
§Supported Conversions
The conversion system supports transformation between major subtitle formats:
§Input Formats (Auto-detected)
- SRT (SubRip): Most common subtitle format
- ASS/SSA (Advanced SubStation Alpha): Rich formatting support
- VTT (WebVTT): Web-optimized subtitle format
- SUB (MicroDVD): Frame-based subtitle format
- SMI (SAMI): Microsoft subtitle format
- LRC (Lyrics): Simple lyric format
§Output Formats (User-specified)
- SRT: Universal compatibility and simplicity
- ASS: Advanced styling and positioning
- VTT: HTML5 video and web applications
- SUB: Legacy system compatibility
§Conversion Features
- Format Detection: Automatic input format recognition
- Styling Preservation: Maintain formatting where possible
- Encoding Conversion: Handle various character encodings
- Batch Processing: Convert multiple files efficiently
- Quality Validation: Verify output format integrity
- Backup Creation: Preserve original files optionally
§Quality Assurance
Each conversion undergoes comprehensive validation:
- Timing Integrity: Verify timestamp accuracy and ordering
- Content Preservation: Ensure no text loss during conversion
- Format Compliance: Validate output meets format specifications
- Encoding Correctness: Verify character encoding consistency
- Styling Translation: Map styles between format capabilities
§Examples
ⓘ
use subx_cli::cli::{ConvertArgs, OutputSubtitleFormat};
use subx_cli::commands::convert_command;
use std::path::PathBuf;
// Convert single SRT file to ASS format
let args = ConvertArgs {
input: PathBuf::from("input.srt"),
format: Some(OutputSubtitleFormat::Ass),
output: Some(PathBuf::from("output.ass")),
keep_original: true,
encoding: "utf-8".to_string(),
};
convert_command::execute(args).await?;
// Batch convert directory with default settings
let batch_args = ConvertArgs {
input: PathBuf::from("./subtitles/"),
format: Some(OutputSubtitleFormat::Vtt),
output: None, // Use default naming
keep_original: true,
encoding: "utf-8".to_string(),
};
convert_command::execute(batch_args).await?;Functions§
- execute
- Execute subtitle format conversion with comprehensive validation and error handling.
- execute_
with_ config - Execute subtitle format conversion with injected configuration service.