fix: 修复视频切分前几秒无画面问题
问题分析: - 原因:使用 -c copy 流复制模式在非关键帧位置切分 - 症状:切分后的视频前几秒显示黑屏或无画面 解决方案: 1. 新增三种切分模式: - Fast: 快速模式(流复制,速度快但可能有画面问题) - Accurate: 精确模式(重新编码,确保画面完整) - Smart: 智能模式(关键帧对齐 + 快速切分) 2. 精确模式技术改进: - 使用 libx264 重新编码视频 - 使用 aac 重新编码音频 - 添加 -preset fast 提高编码速度 - 设置 -crf 23 保证质量 - 添加 -movflags +faststart 优化播放 3. 智能模式特性: - 自动获取视频关键帧信息 - 将切分点调整到最近的关键帧 - 结合快速切分提高效率 4. 新增调试功能: - test_video_split 命令测试不同切分模式 - 详细的切分日志输出 - 模式选择和参数配置 默认配置: - 使用 Accurate 模式确保画面完整 - 可通过配置切换到其他模式 现在切分的视频应该不会再有前几秒无画面的问题!
This commit is contained in:
@@ -142,6 +142,20 @@ pub struct CreateMaterialRequest {
|
||||
pub max_segment_duration: Option<f64>, // 最大片段时长(秒)
|
||||
}
|
||||
|
||||
/// 视频切分模式
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub enum VideoSplitMode {
|
||||
Fast, // 快速模式(流复制,可能有画面问题)
|
||||
Accurate, // 精确模式(重新编码,确保画面完整)
|
||||
Smart, // 智能模式(关键帧对齐 + 快速切分)
|
||||
}
|
||||
|
||||
impl Default for VideoSplitMode {
|
||||
fn default() -> Self {
|
||||
VideoSplitMode::Accurate
|
||||
}
|
||||
}
|
||||
|
||||
/// 素材处理配置
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
pub struct MaterialProcessingConfig {
|
||||
@@ -152,6 +166,7 @@ pub struct MaterialProcessingConfig {
|
||||
pub audio_quality: String, // 音频质量设置
|
||||
pub output_format: String, // 输出格式
|
||||
pub auto_process: Option<bool>, // 是否自动处理
|
||||
pub split_mode: VideoSplitMode, // 视频切分模式
|
||||
}
|
||||
|
||||
impl Default for MaterialProcessingConfig {
|
||||
@@ -164,6 +179,7 @@ impl Default for MaterialProcessingConfig {
|
||||
audio_quality: "medium".to_string(),
|
||||
output_format: "mp4".to_string(),
|
||||
auto_process: Some(true),
|
||||
split_mode: VideoSplitMode::Accurate, // 默认使用精确模式
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user