影片處理大師

👤 歡樂馬 📦 v1.0.0 ⭐ 4.4 ⬇️ 173 下載
🎨 設計多媒體 免費

📖 技能介紹


name: ffmpeg-video-processing display_name: 影片處理大師 description: 專業影片處理工作流助手。支援影片剪輯、格式轉換、音訊處理、字幕處理、濾鏡特效、批次處理等全流程操作。當用戶提到"剪輯影片"、"合併影片"、"分割影片"、"轉碼"、"加字幕"、"調速"、"去水印"、"提取音訊"、"影片壓縮"、"批次處理"等關鍵詞時啟用。 tools: ["sandbox_generate_image"]


影片處理大師

核心原則

不要只做簡單的命令執行器,要做懂影片處理工藝鏈的專業工程師。每個處理任務都應該考慮輸入診斷 → 方案設計 → 引數最佳化 → 執行驗證的完整閉環。

持久引擎(因果鏈)輸入診斷 → 編碼器選擇 → 引數調優 → 濾鏡鏈設計 → 同步控制 → 輸出驗證 → 產物交付

質量測試(可證偽)

處理方案只有通過以下測試才算成立: - 輸出檔案能被目標平臺/播放器正確解碼播放 - 音畫同步誤差在可接受範圍內(≤40ms) - 關鍵質量引數(解析度、位元速率、幀率)符合預期 - 檔案大小在目標約束範圍內


輸入診斷

生產前,識別或合理假設以下維度:

  • 目標市場/平臺:抖音/TikTok/YouTube/B站/微信影片號/其他
  • 輸入檔案資訊:格式、編碼器、解析度、幀率、時長、音訊取樣率、聲道數
  • 輸出目標:格式、編碼器、解析度、位元速率、幀率、檔案大小約束
  • 處理型別:剪輯/合併/轉碼/加字幕/調色/壓縮/提取/批次
  • 特殊需求:硬體加速、透明度支援、HDR、多音軌、多字幕

    7w4.net收錄了海量優質技能外掛。

  • 質量優先順序:速度優先/平衡/質量優先
  • 相容性要求:目標裝置、播放器、平臺限制
  • 合規敏感點:版權素材、水印、敏感內容
  • 批次規模:單檔案/小批次(<10)/中批次(10-100)/大批次(>100)
  • 自動化程度:手動執行/指令碼化/完全自動化

若使用者給的上下文很少,做合理假設並繼續。僅在關鍵資訊(如輸入檔案路徑、輸出目標)確實無法推斷時才發問。


必用技能

  • 使用 load_skill 載入 ffmpeg-media-processing 技能獲取詳細的 FFmpeg 命令參考與工藝清單

工作流(步驟)

步驟 1:輸入診斷與資訊收集

  1. 使用檔案讀取能力獲取輸入影片的元資訊(若使用者提供檔案路徑)
  2. 確認處理型別、目標平臺、質量約束
  3. 識別潛在的相容性風險(編碼格式、容器支援、平臺限制)

步驟 2:方案設計與編碼器選擇

根據診斷結果選擇最優工具鏈:

編碼器選擇矩陣

用途 推薦編碼器 適用場景
網路分享 libx264 + aac 最大相容性,平衡質量與體積
高質量存檔 libx264 (CRF 18) / libx265 視覺無損,長期儲存
快速處理 libx264 (preset ultrafast) 速度優先,預覽/草稿
硬體加速 h264_nvenc / h264_qsv GPU 可用時大幅提速
HEVC/H.265 libx265 更小體積,較新裝置播放
透明通道 vp9 / prores_ks 需要透明度的場景
GIF gif + paletteuse 動圖製作

質量引數快速決策

  • CRF 值:18(高質量)→ 23(平衡)→ 28(壓縮優先)
  • Preset:slow(質量優先)→ medium(平衡)→ ultrafast(速度優先)
  • 解析度:保持原解析度或按平臺要求縮放
  • 幀率:保持原幀率或降為 24/25/30 fps

步驟 3:濾鏡鏈設計與引數調優

根據處理型別構建濾鏡鏈:

常用濾鏡速查

濾鏡型別 命令片段 用途
縮放 -vf "scale=1920:1080" 解析度調整
裁剪 -vf "crop=iw-200:ih-100:100:50" 去黑邊
旋轉 -vf "transpose=1" 90度旋轉
翻轉 -vf "hflip" / -vf "vflip" 水平/垂直翻轉
變速 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" 2倍速
倒放 -vf reverse -af areverse 影片+音訊倒放
水印 -vf "drawtext=text='Watermark':x=10:y=10" 文字水印
模糊 -vf "gblur=sigma=2" 高斯模糊
銳化 -vf "unsharp=5:5:1.0" 銳化增強
色彩 -vf "eq=brightness=0.06:contrast=1.2:saturation=1.5" 亮度對比度飽和度
黑白 -vf "hue=s=0" 去色

複雜濾鏡鏈模式

# 畫中畫 + 水印 + 色彩校正
-filter_complex "
[0:v]colorbalance=rs=0.1:gs=-0.05[base];
[base][1:v]overlay=W-w-10:H-h-10[pip];
[pip][2:v]overlay=10:10[outv]
"

步驟 4:同步控制與時序處理

音畫同步關鍵引數

  • -vsync cfr:恆定幀率,適合大多數場景
  • -vsync vfr:可變幀率,適合螢幕錄製
  • -async 1:音訊自動同步
  • -copyts:保留原始時間戳
  • -avoid_negative_ts make_zero:避免負時間戳

關鍵幀對齊

# 精確裁剪(重新編碼)
ffmpeg -ss 00:01:00 -to 00:02:30 -i input.mp4 -c:v libx264 -c:a aac output.mp4

# 快速裁剪(流複製,僅限關鍵幀對齊)
ffmpeg -ss 00:01:00 -t 60 -i input.mp4 -c copy output.mp4

步驟 5:字幕處理

硬字幕(燒錄)

# SRT 字幕燒錄
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='FontSize=24,PrimaryColour=&H00FFFFFF&,OutlineColour=&H00000000&,Outline=2'" output.mp4

# ASS 字幕燒錄(保留樣式)
ffmpeg -i input.mp4 -vf "ass=subtitle.ass" output.mp4

# 中文字型支援
ffmpeg -i input.mp4 -vf "subtitles=subtitle.srt:force_style='FontName=SimHei,FontSize=24'" output.mp4

軟字幕(嵌入)

# 嵌入字幕軌(MP4)
ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

# 多字幕軌(MKV)
ffmpeg -i input.mp4 -i zh.srt -i en.srt -map 0 -map 1 -map 2 -c copy -c:s srt -metadata:s:s:0 language=chi -metadata:s:s:1 language=eng output.mkv

步驟 6:音訊處理

常用音訊操作

# 提取音訊
ffmpeg -i input.mp4 -vn -c:a libmp3lame -q:a 2 output.mp3

# 提取無損音訊
ffmpeg -i input.mp4 -vn -c:a flac output.flac

# 替換音軌
ffmpeg -i video.mp4 -i new_audio.mp3 -c:v copy -c:a aac -map 0:v -map 1:a output.mp4

# 音量調整(提升2倍)
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4

# 混音(影片原音 + 背景音樂)
ffmpeg -i video.mp4 -i bgm.mp3 -filter_complex "[0:a][1:a]amix=inputs=2:duration=first:dropout_transition=3" output.mp4

# 音訊降噪
ffmpeg -i input.mp4 -af "highpass=f=200,lowpass=f=3000" output.mp4

步驟 7:批次處理與自動化

Python 批次處理模板

import os
import subprocess
from concurrent.futures import ProcessPoolExecutor
from tqdm import tqdm

def convert_video(input_path, output_path):
    """單檔案處理函式"""
    cmd = [
        'ffmpeg', '-i', input_path,
        '-c:v', 'libx264', '-preset', 'fast', '-crf', '23',
        '-c:a', 'aac', '-b:a', '128k',
        '-y', output_path
    ]
    subprocess.run(cmd, check=True, capture_output=True)

def batch_convert(input_dir, output_dir, max_workers=None):
    """批次處理入口"""
    os.makedirs(output_dir, exist_ok=True)
    video_files = [f for f in os.listdir(input_dir) if f.endswith(('.mp4', '.mov', '.avi', '.mkv'))]

    if max_workers is None:
        max_workers = os.cpu_count()

    with ProcessPoolExecutor(max_workers=max_workers) as executor:
        futures = []
        for filename in video_files:
            input_path = os.path.join(input_dir, filename)
            output_path = os.path.join(output_dir, f"converted_{filename}")
            futures.append(executor.submit(convert_video, input_path, output_path))

        for future in tqdm(futures, desc="處理進度", unit="檔案"):
            future.result()

    print(f"✅ 完成!共處理 {len(video_files)} 個檔案")

if __name__ == '__main__':
    batch_convert('./input_videos', './output_videos')

自適應位元速率壓縮指令碼

import subprocess
import json

def get_video_info(input_file):
    """獲取影片資訊"""
    cmd = [
        'ffprobe', '-v', 'quiet', '-print_format', 'json',
        '-show_format', '-show_streams', input_file
    ]
    result = subprocess.run(cmd, capture_output=True, text=True)
    return json.loads(result.stdout)

def calculate_target_bitrate(duration, target_size_mb):
    """根據目標大小計算位元速率"""
    target_bits = target_size_mb * 8 * 1024 * 1024
    audio_bits = 128 * 1024 * duration  # 預留128kbps音訊
    video_bits = target_bits - audio_bits
    video_bitrate = int(video_bits / duration)
    return video_bitrate

def compress_to_target_size(input_file, output_file, target_size_mb):
    """壓縮到目標大小(兩遍編碼)"""
    info = get_video_info(input_file)
    duration = float(info['format']['duration'])
    target_bitrate = calculate_target_bitrate(duration, target_size_mb)

    # 兩遍編碼
    cmd_pass1 = [
        'ffmpeg', '-i', input_file,
        '-c:v', 'libx264', '-b:v', f'{target_bitrate}',
        '-pass', '1', '-f', 'mp4', '-y', '/dev/null'
    ]

    cmd_pass2 = [
        'ffmpeg', '-i', input_file,
        '-c:v', 'libx264', '-b:v', f'{target_bitrate}',
        '-c:a', 'aac', '-b:a', '128k',
        '-pass', '2', '-y', output_file
    ]

    subprocess.run(cmd_pass1, check=True)
    subprocess.run(cmd_pass2, check=True)

步驟 8:執行與驗證

  1. 執行處理命令/指令碼
  2. 使用檔案讀取能力驗證輸出檔案的元資訊
  3. 確認關鍵質量指標:
  4. 檔案可正常開啟
  5. 時長與預期一致
  6. 解析度/幀率正確
  7. 音畫同步正常
  8. 檔案大小在約束範圍內

步驟 9:交付產物

通過檔案展示能力將處理完成的影片/音訊檔案呈現給使用者。


輸出契約

預設產出結構:

處理報告: - 輸入檔案資訊:格式、編碼器、解析度、幀率、時長、大小 - 處理方案:選擇的工具鏈、編碼器、關鍵引數 - 輸出檔案資訊:格式、編碼器、解析度、幀率、時長、大小 - 質量驗證結果:通過/未通過,關鍵指標數值 - 處理耗時


高階工藝清單

1. 硬體加速編碼

NVIDIA GPU (NVENC)

ffmpeg -hwaccel cuda -i input.mp4 -c:v h264_nvenc -preset p7 -cq 23 -c:a aac output.mp4

Intel Quick Sync (QSV)

ffmpeg -hwaccel qsv -i input.mp4 -c:v h264_qsv -global_quality 23 -c:a aac output.mp4

Apple VideoToolbox

ffmpeg -i input.mp4 -c:v h264_videotoolbox -q:v 65 -c:a aac output.mp4

2. 多流合併高階模式

# 多影片拼接(複雜濾鏡)
ffmpeg -i v1.mp4 -i v2.mp4 -i v3.mp4 \
-filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mp4

# 不同編碼格式合併(先統一編碼)
ffmpeg -i v1.mp4 -i v2.avi -i v3.mov \
-filter_complex "[0:v]format=yuv420p[v0];[1:v]format=yuv420p[v1];[2:v]format=yuv420p[v2];[v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" -c:v libx264 -c:a aac output.mp4

3. GIF 高質量製作

# 最佳化調色盤 GIF
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128[p];[s1][p]paletteuse=dither=bayer" output.gif

4. 轉場效果

# 淡入淡出轉場
ffmpeg -i v1.mp4 -i v2.mp4 \
-filter_complex "[0:v]fade=t=out:st=4:d=1[v0];[1:v]fade=t=in:st=0:d=1[v1];[v0][v1]concat[outv]" \
-map "[outv]" output.mp4

5. 多音軌處理

# 新增多語言音軌
ffmpeg -i video.mp4 -i audio_zh.mp3 -i audio_en.mp3 \
-map 0:v -map 1:a -map 2:a \
-c:v copy -c:a aac \
-metadata:s:a:0 language=chi -metadata:s:a:1 language=eng \
output.mkv

6. 影片疊加與畫中畫

# 畫中畫(小影片在右下角)
ffmpeg -i main.mp4 -i overlay.mp4 \
-filter_complex "[0:v][1:v]overlay=W-w-10:H-h-10" \
-c:a copy output.mp4

# 分屏(左右並排)
ffmpeg -i left.mp4 -i right.mp4 \
-filter_complex "[0:v]scale=960:1080[l];[1:v]scale=960:1080[r];[l][r]hstack" \
output.mp4

7. 色彩空間轉換

# HDR to SDR
ffmpeg -i hdr.mp4 -vf "zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,format=yuv420p" \
-c:v libx264 -c:a copy sdr.mp4

避坑指南

常見錯誤與解決方案

問題 原因 解決方案
音畫不同步 時間戳不對齊、B幀處理錯誤 新增 -vsync cfr -async 1 -copyts
拼接後黑幀 編碼引數不一致 先統一編碼再合併
裁剪不準 起始點不在關鍵幀 重新編碼或使用 -ss-i
字幕亂碼 字型/編碼不支援 指定字型 FontName=SimHei,確認 UTF-8
輸出過大 位元速率未控制 使用 CRF 或指定目標位元速率
播放器不識別 容器/編碼不支援 轉為 H.264+AAC 封裝 MP4
合併失敗 格式/編碼不一致 使用 concat 濾鏡而非協議

高危操作警告

反模式 1:盲目使用 -c copy 合併不同編碼的影片 ✅ 正確做法:先統一編碼,再合併

反模式 2:忽略時間戳對齊直接拼接 TS 切片 ✅ 正確做法:新增 -copyts -avoid_negative_ts make_zero

反模式 3:在 VFR 源上直接裁剪 ✅ 正確做法:轉為 CFR 或使用 -vsync vfr


快速參考卡

一行命令速查

# 格式轉換
ffmpeg -i input.avi output.mp4

# 壓縮影片(CRF 23)
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac output.mp4

# 裁剪片段(10秒-1分鐘)
ffmpeg -ss 00:00:10 -to 00:01:00 -i input.mp4 -c copy output.mp4

# 提取音訊
ffmpeg -i input.mp4 -vn -c:a libmp3lame output.mp3

# 改變解析度
ffmpeg -i input.mp4 -vf scale=1280:720 output.mp4

# 改變速度(2倍速)
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4

# 新增水印
ffmpeg -i input.mp4 -i logo.png -filter_complex "overlay=10:10" output.mp4

# 合併影片
ffmpeg -f concat -i list.txt -c copy output.mp4

# 轉 GIF
ffmpeg -i input.mp4 -vf "fps=15,scale=480:-1" output.gif

# 提取關鍵幀圖片
ffmpeg -i input.mp4 -vf "select='eq(pict_type,I)'" -vsync vfr frame_%04d.png

# 影片截圖
ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 screenshot.png

# 音量提升
ffmpeg -i input.mp4 -af "volume=2.0" output.mp4

# 倒放
ffmpeg -i input.mp4 -vf reverse -af areverse output.mp4

靜默自檢清單

交付前內部跑一遍,不輸出給使用者:

  • [ ] 輸入檔案資訊已確認或合理假設
  • [ ] 編碼器選擇與目標平臺相容
  • [ ] 質量引數(CRF/位元速率/解析度)已明確
  • [ ] 音畫同步引數已配置
  • [ ] 輸出檔案已驗證可播放
  • [ ] 關鍵質量指標符合預期
  • [ ] 檔案大小在約束範圍內
  • [ ] 處理報告已生成

🤖 AI 評測

這個影片處理技能內容相當豐富,提供了大量實用的FFmpeg命令參考和操作指南,編碼引數、濾鏡效果、批次處理等常見需求都有覆蓋。它的教學結構清晰,能幫助使用者系統學習影片處理。不過在實際使用中可能會遇到問題,因為它聲稱能處理影片但配置的工具更適合生成圖片,對於普通使用者來說可能無法順利執行指令。總體而言知識庫質量不錯,但工具適配性存在明顯不足。

📊 多維度評分

適應性4.2
規範性4.5
有效性4.5
可靠性4.2
可信度4.9

📁 包含檔案 (1 個)

📄 SKILL.md 14.7 KB