🎬 TC04 · ขั้นสูง

Reframe + Batch + Chroma
ทุกอย่างรวมกัน

โหมดหนักที่สุดของ V3 — จาก vlog 5 นาที ตัดเป็น 10 ชิ้น แต่ละชิ้นมี 21 มุม = 210 outputs ในการ render ครั้งเดียว

⏱ 20 นาที 📖 10 sections 🧠 3 quiz 🚀 21×N outputs

🧠 TC04 = TC02 + TC03 รวมกัน

TC02 = 1 คลิป + reframe 21 มุม = 21 outputs

TC03 = 1 คลิปยาว + batch = N outputs

TC04 = 1 คลิปยาว + reframe 21 มุม + batch = 21 × N outputs

🎬 TC04 คืออะไร?

คือการ "ตัด + ซูม + ตัดจอเขียว" ทั้งหมดในครั้งเดียว

ตัวอย่างในชีวิตจริง

คุณมี vlog ท่องเที่ยวญี่ปุ่น 10 นาที — อยากตัดเป็น 20 shorts × TikTok แต่ละ short มี 21 มุมให้เลือก เพราะ content มีทั้งคน อาหาร วิว

TC04 ทำให้ใน 1 render ได้ 20 × 21 = 420 outputs — เอาไปเลือกทีหลังว่าจะใช้มุมไหน

ตัวอย่าง: vlog 5 นาที → 10 segments × 21 angles = 210 outputs

Input: 1 product (5 นาที) + 1 background + segment_duration=30s + 7 lens × 3 composition 📦 product 5min → 10 segments (30s each) → × 21 angles (reframe) = 210 MP4s × 10 segments × 3 compositions Total: 10 × 7 lens × 3 = 210 MP4 files

🎯 เมื่อไหร์ใช้ TC04?

TC04 เหมาะกับงาน "1 คลิปยาว → หลาย short × หลายมุม"

✅ เหมาะมาก

  • 🎥 Vlog 10+ นาที → 20-30 shorts × หลายมุม
  • 📺 รายการทีวี → ตัด+ซูม ทุก scene
  • 🎤 สัมภาษณ์ยาว → แยกเป็น quote clips + มุม
  • 🎓 คอร์สออนไลน์ → แยก lesson + ซูมกระดาน
  • 🎮 Gameplay → highlight + เลือกมุม
  • 🎙️ Podcast 4 คน → ตัด + ซูมคนละคน

❌ ไม่เหมาะ

  • ❌ คลิปสั้นอยู่แล้ว → ใช้ TC01
  • ❌ อยากได้แค่ 1 มุม → ใช้ TC03
  • ❌ quota เหลือน้อย (210 outputs/render = 1 quota แต่ไฟล์เยอะ)
  • ❌ เครื่องช้า (TC04 กิน CPU/GPU เยอะสุด)

📊 Output Matrix — คำนวณ outputs ก่อน render

TC04 outputs = segments × lens × composition

ตัวอย่างการคำนวณ

ความยาว product segment lens comp Total outputs ไฟล์โดยประมาณ
2 นาที30s734 × 7 × 3 = 84~250MB
5 นาที30s7310 × 7 × 3 = 210~700MB
10 นาที60s7310 × 7 × 3 = 210~700MB
30 นาที60s3230 × 3 × 2 = 180~500MB
60 นาที120s3130 × 3 × 1 = 90~300MB
⚠️ ขนาดไฟล์ใหญ่!

TC04 สร้างไฟล์เยอะมาก — 1 render vlog 5 นาที = 210 MP4 = 700MB+ ระวัง disk quota!

⚙️ TC04 ทำงานยังไง?

4 ขั้นตอนหลัก (อัตโนมัติทั้งหมด)

1

Split — ตัด product เป็น N segments

เหมือน TC03 — ใช้ ffmpeg segment filter แบ่งเป็น N ไฟล์ ตาม segment_duration

⏱ ใช้เวลา: < 1 วินาที ต่อ segment
2

Reframe — ซูมแต่ละ segment เป็น 21 มุม

เหมือน TC02 แต่ทำกับทุก segment — ได้ N × 21 outputs (ยังมีจอเขียว)

⏱ ใช้เวลา: ~2-5 วินาที ต่อ segment
3

Chroma — ตัดจอเขียวทุกมุม ใส่ background

เหมือน TC01 — เอา N × 21 outputs ไปผ่าน chroma ได้ N × 21 = 21×N final MP4s

⏱ ใช้เวลา: ~5-15 วินาที ต่อ segment (parallel)
4

Encode + Upload — บันทึก MP4 และอัปโหลดกลับ

ทุก output ถูก encode เป็น H.264 MP4 แล้วอัปโหลดมาให้ download

⏱ รวมอยู่ในขั้น 3 แล้ว

🎛️ ตั้งค่า TC04

TC04 = TC02 settings + TC03 settings (รวมกัน)

1. Chroma (เหมือน TC01)

width, height, preset, key_color, similarity, blend, despill, bitrate

→ ดูรายละเอียดในคอร์ส TC01

2. Reframe (จาก TC02)

reframe_lens_count — 1-7 lens (default 7)

reframe_compositions — center,left,right (เลือก 1-3)

reframe_short_side — 720 default (เล็ก = เร็ว, ใหญ่ = คม)

3. Batch (จาก TC03)

segment_duration — ความยาวแต่ละ segment (วินาที) · 0.5-600

match_count_modeproduct_count หรือ segment_count

💻 ตัวอย่าง Python

เรียก V3 API แบบ TC04

# tc04_render.py — เรียก V3 API แบบ TC04 (reframe + batch + chroma)
import requests, time

BASE = "https://green.cutdee.com/v3api"
API_KEY = "cutdee_vdo_..."  # เก็บใน env
H = {"Authorization": f"Bearer {API_KEY}"}

# 1. Submit TC04 — vlog 5 นาที → 10 segs × 21 angles = 210 outputs
files = {
    "product": ("vlog5min.mp4", open("vlog5min.mp4", "rb"), "video/mp4"),
    "background": ("studio.mp4", open("studio.mp4", "rb"), "video/mp4"),
}
data = {
    # Chroma
    "width": "1080", "height": "1920",
    "preset": "fast", "key_color": "#00FF00",
    "similarity": "0.32", "blend": "0.06", "despill": "0.35",
    # Reframe (จาก TC02)
    "reframe_lens_count": "7",
    "reframe_compositions": "center,left,right",
    # Batch (จาก TC03)
    "segment_duration": "30",
}
r = requests.post(f"{BASE}/api/render/tc04", files=files, data=data, headers=H, timeout=600)
job = r.json()
print("queued:", job["job_id"])

# 2. Poll (TC04 ใช้เวลานาน ~60-180 วินาที)
while True:
    j = requests.get(f"{BASE}/api/job/{job['job_id']}", headers=H).json()
    pct = j.get("progress", 0)
    n = len(j.get("output_files", []))
    print(f"  {j['status']:12s} progress={pct}% outputs={n}/210")
    if j["status"] in ("succeeded", "failed"):
        break
    time.sleep(5)

# 3. Download ทั้งหมด (organized by lens)
if j["status"] == "succeeded":
    import os, re
    for fn in j["output_files"]:
        # Filename: product_xxx__lens35mm__center__tc04_*.mp4
        m = re.search(r"lens(\d+mm)__(\w+)", fn)
        if m:
            lens, comp = m.group(1), m.group(2)
            folder = f"results/{lens}/{comp}"
        else:
            folder = "results/other"
        os.makedirs(folder, exist_ok=True)
        out = requests.get(
            f"{BASE}/api/v1/jobs/{job['job_id']}/download/{fn}", headers=H)
        open(f"{folder}/{fn}", "wb").write(out.content)
    print(f"saved {len(j['output_files'])} files organized by lens")

🧠 ทดสอบความเข้าใจ

❓ 1. vlog 10 นาที ÷ 60s = 10 segments × 21 angles จะได้กี่ outputs?

  • ✅ 10 × 7 × 3 = 210 outputs
  • 10 × 21 = 210 outputs
  • 10 × 7 = 70 outputs
  • 21 × 60 = 1260 outputs

❓ 2. TC04 ใช้เวลา render นานเท่าไหร่ (vlog 5 นาที)?

  • ~5-10 วินาที (เร็วมาก)
  • ~30-60 วินาที
  • ✅ ~60-180 วินาที (1-3 นาที — ขึ้นกับ cluster load)
  • ~10-30 นาที (ช้ามาก)

❓ 3. ถ้าอยากให้ TC04 เร็วขึ้น ควรทำยังไง?

  • เพิ่ม segment_duration เป็น 600s
  • ใช้ output 4K แทน 1080p
  • ใส่ audio file
  • ✅ ลด lens_count เหลือ 3 และใช้ composition เดียว (ลด 7×3 → 3×1 = 9 เท่า)

💡 เคล็ดลับใช้งาน

⚡ เร่งความเร็ว

  • ลด reframe_lens_count เหลือ 3 (wide+std+portrait)
  • ใช้ reframe_compositions=center ตัวเดียว
  • ใช้ preset=ultrafast (ไฟล์ใหญ่ขึ้นนิดหน่อย)
  • Output: 84 → 30 → 10 outputs (3 เท่าเร็วขึ้น)

💾 จัดการไฟล์

TC04 สร้างไฟล์เยอะ — ใช้ Python script จัด folder ตาม lens/composition/segment เพื่อหาไฟล์ง่ายๆ

💰 คำนวณ quota

TC04 1 render = 1 quota (ไม่ใช่ 210) แต่ได้ไฟล์ 210 — free tier 100 renders/mo = 21,000 outputs ฟรี!

🔄 Smart batch

ถ้ามี vlog 10 ตอน → ส่ง TC04 ทีเดียว = 10 × 1 = 10 render jobs ใช้ quota 10

🎵 TC04 กับเสียง (Audio behavior)

คำถามที่หลายคนสงสัย: "ถ้ามีเสียง มันจะตัดตามความยาวเสียงมั้ย?"

❌ คำตอบสั้นๆ: ไม่

TC04 ตัดตาม "เวลา" เท่านั้น ไม่สนใจ audio

segment_duration = 30s หมายถึง "ตัดทุก 30 วินาทีของวิดีโอ" — ไม่สนว่าใน 30 วินาทีนั้นจะพูด 3 คำหรือ 30 คำ เป็นเสียงเงียบหรือเสียงดัง

Audio ทำอะไรได้บ้างใน TC04?

✅ Audio passthrough (เสียงจาก product)

ถ้าไม่ใส่ audio file → output จะใช้เสียงจาก product.mp4 โดยตรง (stream copy ถ้า codec ตรงกัน)

→ เสียงจะถูกตัดตาม segment ด้วย (เช่น segment 30s = เสียง 30s)

✅ Audio file แยก (background music/voiceover)

ถ้าใส่ audio file → output จะใช้เสียงจาก audio file นั้นแทน (จะ loop ถ้าสั้นกว่า segment)

→ audio ไม่กระทบ segment_duration

ตัวอย่าง: vlog 5 นาที + bgm.mp3 + segment=30s

เวลา Video Audio
0:00-0:30product 0-30sbgm 0-30s
0:30-1:00product 30-60sbgm 30-60s (loop ต่อ)
1:00-1:30product 60-90sbgm 60-90s

→ Audio ยาวพอดี ก็จะวนลูปต่อเนื่องตลอด 5 นาที

ถ้าอยากตัดตามเสียง/จังหวะพูดจริงๆ?

V3 ปัจจุบัน ไม่มี audio-based segmentation ในตัว — ต้องทำเองด้วย Python + ffmpeg:

# 1. ใช้ ffmpeg detect silence หา scene boundaries
import subprocess
result = subprocess.run([
    "ffmpeg", "-i", "vlog.mp4",
    "-af", "silencedetect=noise=-30dB:d=0.5",
    "-f", "null", "-"
], capture_output=True, text=True)

# 2. parse silence timestamps → หาจุดตัด
# 3. ใช้ ffmpeg -ss -t ตัดวิดีโอเป็นไฟล์ย่อยๆ ก่อน
# 4. แล้วค่อยส่ง TC01 ทีละไฟล์ (ไม่ต้องใช้ TC04)

# หรือใช้ scene detection (แม่นกว่า silence detection):
# ffmpeg -i vlog.mp4 -filter:v "select='gt(scene,0.3)',showinfo" -f null -
💡 แนะนำ

ถ้าต้องการ "ตัดตามเนื้อหาจริง" ใช้ Python script ตัดวิดีโอเป็นไฟล์ย่อยๆ ก่อน → ส่ง TC01 เป็นงานๆ ไป — จะยืดหยุ่นกว่า TC04 มาก และคุม quality ได้ดีกว่า

⚠️ ข้อผิดพลาดที่พบบ่อย

❌ ลืมว่า outputs คูณกัน

vlog 5 นาที ÷ 30s × 7 × 3 = 210 MP4 = 700MB+ — ถ้า disk เหลือ 500MB จะ fail ตอน encode

❌ ใช้กับ product แนวตั้งอยู่แล้ว

reframe ไม่มีประโยชน์ (crop แค่นิดเดียว) — ใช้ TC03 จะคุ้มกว่า

❌ ตั้ง segment_duration เล็กเกิน

vlog 5 นาที ÷ 5s = 60 segments × 21 = 1,260 outputs — ใช้เวลา render นานมาก และ disk เต็ม

📚 เรียนอะไรต่อดี?

  1. Python API — batch 100+ jobs, queue management, smart retry
  2. คำนวณต้นทุน — เมื่อไหร่ควรใช้ TC01/02/03/04
  3. Troubleshooting — แก้ปัญหา INVALID_INPUT, queue ค้าง, despill เพี้ยน
← ก่อนหน้า
Batch + Chroma TC03