Batch + Chroma
ตัดวิดีโอยาวเป็นชิ้นสั้น
จาก vlog 5 นาที → 10 shorts 30 วินาที ใส่ฉากหลังใหม่อัตโนมัติ — เหมาะกับ content creator ที่อยากลง TikTok/Reels แบบไม่ต้องนั่งตัดเอง
🔄 ทบทวน TC01 + TC02
TC01 = 1 คลิป + 1 ฉาก = 1 output (ตัดจอเขียวอย่างเดียว)
TC02 = 1 คลิป + 1 ฉาก + 7 lens × 3 composition = 21 outputs (ซูมหลายมุม)
TC03 = 1 คลิปยาว + 1 ฉาก → ตัดเป็น N ชิ้น = N outputs (ตัดตามเวลา)
✂️ Batch คืออะไร?
คือการ "ตัดวิดีโอยาวเป็นหลายๆ ชิ้นสั้น" โดยใช้เวลาเป็นเกณฑ์
ตัวอย่างในชีวิตจริง
คุณถ่าย vlog ไปเที่ยวทะเล 5 นาที อยากตัดเป็น 10 shorts ลง TikTok (ชิ้นละ 30 วินาที) — ปัญหาคือ นั่งตัดเองใน CapCut/Premiere ใช้เวลาเป็นชั่วโมง
TC03 ทำให้อัตโนมัติ — บอกแค่ "ตัดทุก 30 วินาที" + ใส่ฉากหลัง → ได้ 10 คลิปพร้อมใช้
Visual: 5 นาที → 10 ชิ้น × 30 วินาที
🎯 เมื่อไหร่ใช้ TC03?
TC03 เหมาะกับงาน "1 คลิปยาว → หลาย short"
✅ เหมาะมาก
- 🎥 Vlog 5-30 นาที → ตัดเป็น 30-60 shorts
- 📺 รายการทีวี → ตัดเป็นไฮไลต์
- 🎤 สัมภาษณ์ยาว → ตัดเป็น quote clips
- 📚 คอร์สเรียน → ตัดเป็น short lessons
- 🎮 Gameplay recording → ตัดเป็น highlight
- 🎙️ Podcast → ตัดเป็น topic clips
❌ ไม่เหมาะ
- ❌ คลิปสั้นอยู่แล้ว (< 1 นาที) → ใช้ TC01
- ❌ อยากได้หลายมุม → ใช้ TC02
- ❌ อยาก cut แบบ highlight เฉพาะจังหวะ → ต้องใช้ AI detect (ยังไม่มี)
- ❌ อยากใส่ audio master → ใช้ TC06
⏱ segment_duration คือหัวใจของ TC03
ค่าเดียวที่ต้องเลือก — "แต่ละชิ้นยาวกี่วินาที"
สูตรคำนวณ
จำนวน outputs = ⌈ ความยาววิดีโอ ÷ segment_duration ⌉
เช่น vlog 5 นาที (300 วินาที) ÷ 30 วินาที = 10 outputs
เลือก segment_duration เท่าไหร่ดี?
⚡ 15-20 วินาที
TikTok / Reels สั้นๆ
เหมาะ: viral hook, teaser
📱 30-60 วินาที
TikTok / Reels ปกติ
เหมาะ: tutorial, vlog, story
🎬 90-180 วินาที
YouTube Shorts / IG Reels
เหมาะ: ละเอียด, highlight
TC03 ตัดตามเวลา แบบสม่ำเสมอ เท่านั้น ไม่ได้ "ฉลาด" — ไม่รู้ว่าตรงไหนคือ highlight ที่ดี
ถ้าต้องการ AI ตัดเฉพาะจังหวะสำคัญ ต้องใช้ workflow อื่น (เช่น Python script ที่วิเคราะห์ scene detection แล้วเลือก segment เอง)
⚖️ TC03 vs TC02 — ต่างกันยังไง?
🟣 TC02 Reframe
- 🎯 เปลี่ยน "มุมกล้อง"
- 📐 Output = 7 lens × 3 = 21
- ⏱ ~30-90 วินาที
- 🎬 ใช้กับ "คลิปสั้น" เป็นหลัก
- 📐 Crop + zoom เท่านั้น ไม่ตัดเวลา
🔵 TC03 Batch
- ✂️ เปลี่ยน "ความยาว"
- 📐 Output = N (ตามความยาว)
- ⏱ ~1-2 วินาที ต่อ segment
- 🎬 ใช้กับ "vlog/รายการยาว" เป็นหลัก
- ⏱ Split ตามเวลา ไม่ crop
TC04 = TC03 + TC02 (batch + reframe) → ตัดเป็นหลายชิ้น แต่ละชิ้นมี 21 มุม = 21×N outputs (จะเรียนในคอร์สถัดไป)
⚙️ TC03 ทำงานยังไง?
3 ขั้นตอนหลัก (อัตโนมัติทั้งหมด)
Split — ตัด product เป็น N segments
ใช้ ffmpeg segment filter แบ่ง product.mp4 ออกเป็น N ไฟล์ แต่ละไฟล์ยาว segment_duration วินาที (ไฟล์สุดท้ายอาจสั้นกว่าถ้าเหลือเศษ)
Chroma — เอาแต่ละ segment ไปตัดจอเขียวใส่ background
แต่ละ segment ถูกเอาไปผ่าน TC01 process — scale → chroma → overlay → despill — ได้ผลลัพธ์เป็น N MP4 พร้อมฉากหลังใหม่
Encode — บันทึกเป็น MP4
ทุก output ถูก encode เป็น H.264 MP4 แล้วอัปโหลดกลับมาให้ดาวน์โหลด
🎛️ ตั้งค่า
TC03 มี 2 กลุ่มตั้งค่า — chroma (เหมือน TC01) + batch (ใหม่)
1. Chroma settings (เหมือน TC01)
2. Batch settings (ใหม่)
💻 ตัวอย่าง Python
เรียก V3 API แบบ TC03
# tc03_render.py — เรียก V3 API แบบ TC03 (batch + chroma)
import requests, time
BASE = "https://green.cutdee.com/v3api"
API_KEY = "cutdee_vdo_..." # เก็บใน env
H = {"Authorization": f"Bearer {API_KEY}"}
# 1. Submit TC03 — vlog 5 นาที → 10 segments × 30 วินาที
files = {
"product": ("vlog5min.mp4", open("vlog5min.mp4", "rb"), "video/mp4"),
"background": ("studio.mp4", open("studio.mp4", "rb"), "video/mp4"),
}
data = {
# Chroma (เหมือน TC01)
"width": "1080", "height": "1920",
"preset": "fast", "key_color": "#00FF00",
"similarity": "0.32", "blend": "0.06", "despill": "0.35",
# TC03 ใหม่: segment duration
"segment_duration": "30", # วินาที
}
r = requests.post(f"{BASE}/api/render/tc03", files=files, data=data, headers=H, timeout=300)
job = r.json()
print("queued:", job["job_id"])
# 2. Poll
while True:
j = requests.get(f"{BASE}/api/job/{job['job_id']}", headers=H).json()
print(f" {j['status']:12s} progress={j.get('progress', 0)}% outputs={len(j.get('output_files', []))}")
if j["status"] in ("succeeded", "failed"):
break
time.sleep(2)
# 3. Download ทั้งหมด
if j["status"] == "succeeded":
import os
os.makedirs("results", exist_ok=True)
for fn in j["output_files"]:
out = requests.get(
f"{BASE}/api/v1/jobs/{job['job_id']}/download/{fn}", headers=H)
open(f"results/{fn}", "wb").write(out.content)
print(f"saved {len(j['output_files'])} files")
🧠 ทดสอบความเข้าใจ
❓ 1. vlog 3 นาที ใช้ segment_duration=30 วินาที จะได้กี่ outputs?
❓ 2. TC03 ต่างจาก TC02 อย่างไร?
❓ 3. ถ้าอยากให้ AI เลือก segment ที่น่าสนใจเอง (ไม่ใช่ตัดเท่าๆ กัน) ต้องทำยังไง?
💡 เคล็ดลับใช้งาน
🎯 segment_duration ที่นิยม
- 15s — TikTok viral hook
- 30s — TikTok ปกติ (แนะนำ)
- 60s — IG Reels, YouTube Shorts
- 90s — Long Reels
📂 ตั้งชื่อไฟล์ segment
ชื่อจะเป็น batch_<timestamp>_NNN_<product_id>_<lens>.mp4 — ใช้ sort ตาม NNN เพื่อเรียงตามลำดับเวลา
⏱ จัดการ quota
vlog 5 นาที ÷ 30s = 10 outputs = 1 render (นับเป็น 1 quota ไม่ใช่ 10)
🔗 Chain กับ TC02/04
ถ้าอยากทั้ง batch + reframe → ใช้ TC04 (จะเรียนในคอร์สถัดไป)
⚠️ ข้อผิดพลาดที่พบบ่อย
TC03 จะสร้าง output เป็นพันไฟล์ใน 1 วิดีโอ 5 นาที → quota หมดเร็ว + server ช้า — ใช้ 15s+ เป็นค่าขั้นต่ำจริงๆ
ถ้า product 2 นาที ใส่ 600s = 1 output (เท่าเดิม) ไม่ได้ช่วยอะไร — ตั้งให้เหมาะกับ content
ถ้า vlog 65 วินาที ÷ 30s = 2 segments (30s + 35s) — segment ที่ 2 จะสั้นกว่าที่ตั้ง
📚 เรียนอะไรต่อดี?
- TC04 (Reframe + Batch) — ซูมหลายมุม + ตัดหลายชิ้น = 21×N outputs
- Python สำหรับเรียก API — batch 100+ jobs, auto-retry, queue management
- คำนวณต้นทุน — 100 vlogs × 10 segments = 1000 outputs = เท่าไหร่