ภาพวาดโทนมิ้นต์ของโต๊ะทำงานริมหน้าต่าง มีแล็ปท็อปที่หน้าจอเป็นหน้าตัดต่อวิดีโอ กล่องที่เพิ่งแกะ และนากสีมิ้นต์กำลังเสียบสายจากกล่องเข้ากับแล็ปท็อป

OpenCut Workshop #1: ติดตั้งโปรแกรมตัดต่อฟรี ใช้บนเว็บทันที หรือรันในเครื่องด้วย Bun

น้องกายEngineering

พี่โชว์อยากได้คลิปสั้นที่พี่โชว์กับน้องกายคุยกันแบบที่เราลงเพจทุกวัน แต่ไม่อยากผูกชีวิตไว้กับแอปตัดต่อที่ฟีเจอร์ดีๆ ต้องจ่ายรายเดือน ซีรีส์นี้เลยจะใช้ OpenCut โปรแกรมตัดต่อวิดีโอโอเพนซอร์สที่ใช้ฟรีบนเว็บ แล้วพาไปทีละตอนจนได้คลิปพี่โชว์–น้องกายเต็มๆ หนึ่งคลิป

ตอนแรกนี้ยังไม่ตัดอะไรเลยครับ เป้าหมายมีแค่ เปิดโปรแกรมให้ได้ จะใช้บนเว็บเลยก็ได้ หรือจะติดตั้งในเครื่องตัวเองก็ได้ ผมลองติดตั้งจริงบนเครื่อง Linux ของผมตามขั้นตอนของ repo ทุกคำสั่ง แล้วจดผลกับ error ที่เจอมาให้หมด

บทนี้จะได้อะไร

  • รู้ว่า OpenCut ตอนนี้มี 2 ตัว และทำไมซีรีส์นี้เลือกตัว classic
  • ทาง A: เปิด opencut.app แล้วใช้ได้เลย ไม่ต้องติดตั้ง
  • ทาง B: ติดตั้งในเครื่องด้วย Bun แล้วเปิดที่ http://localhost:3000 สร้างโปรเจกต์ นำเข้าคลิป และ Export ได้ไฟล์ MP4 จริง
  • รู้ว่าเมื่อไหร่ต้องใช้ Docker และ API key เมื่อไหร่ไม่ต้อง
  • วิธีแก้ error 5 แบบที่ผมเจอระหว่างติดตั้ง

OpenCut คืออะไร

OpenCut เรียกตัวเองว่า “A free and open source video editor for web, desktop, and mobile” (README) ใช้ license MIT ตัวที่ใช้กันอยู่ตอนนี้เป็นเว็บแอปที่รันในเบราว์เซอร์ เหตุผลที่โปรเจกต์เขียนไว้ใน README ของตัว classic มี 3 ข้อ

  • Privacy: วิดีโอไม่ต้องอัปโหลดไปไหน อยู่ในเครื่องเรา
  • ฟรี: ฟีเจอร์พื้นฐานของ CapCut หลายอย่างต้องจ่ายเงินแล้ว
  • ใช้ง่าย: แบบที่ CapCut พิสูจน์แล้วว่าคนต้องการ

ข้อแรกเห็นได้จากโค้ดด้วย โปรเจกต์ถูกเก็บในเบราว์เซอร์เอง (IndexedDB กับ OPFS ซึ่งเป็นพื้นที่เก็บไฟล์ของเบราว์เซอร์) ไม่ได้ส่งขึ้นเซิร์ฟเวอร์ เปรียบเทียบง่ายๆ คือเหมือนไปยืมโต๊ะตัดต่อที่ร้านมาใช้ แต่ฟุตเทจทั้งหมดยังอยู่ในกระเป๋าเรา ไม่ได้ฝากไว้ที่ร้าน

ตอนนี้ OpenCut มี 2 ตัว ซีรีส์นี้ใช้ตัวไหน

ตรงนี้คนสับสนกันเยอะ เพราะ repo หลักกับเว็บที่เปิดใช้ได้ไม่ใช่โค้ดชุดเดียวกัน ผมเช็กเมื่อ 9 ต.ค. 2026 ได้แบบนี้ครับ

classic (ซีรีส์นี้ใช้)rewrite (ตัวใหม่)
repoOpenCut-app/opencut-classic ถูก archive แล้วOpenCut-app/OpenCut
commit ล่าสุดcf5e79e วันที่ 17 พ.ค. 2026e668010 วันที่ 24 ก.ย. 2026
เปิดใช้ที่opencut.appnew.opencut.app
README บอกว่า”archived and no longer maintained""being rewritten from the ground up”

README ของ repo หลักเขียนตรงๆ ว่าตัว classic คือ “the one to reach for today” และ “opencut.app still runs the classic version” ส่วนตัวใหม่จะย้ายไปแทนเมื่อพร้อม ตัวใหม่ตอนนี้เป็นโครงสร้างสำหรับนักพัฒนา ใช้ Rust เป็นแกน ติดตั้งผ่าน proto กับ moon และทีมยังไม่รับ contribution จากข้างนอก

ซีรีส์นี้เลยใช้ตัว classic เพราะเป็นตัวเดียวที่ทำคลิปได้จริงวันนี้ ทั้งบนเว็บและในเครื่อง มีข้อควรรู้ 2 ข้อครับ

  1. ตัว classic ไม่มีการแก้บั๊กแล้ว ถ้าวันหนึ่ง opencut.app เปลี่ยนไปใช้ตัวใหม่ ผมจะกลับมาอัปเดตซีรีส์นี้
  2. opencut.app หน้าตาไม่ตรงกับโค้ดล่าสุดของ classic เป๊ะ ผมเปิดสองตัวเทียบกันด้วยเบราว์เซอร์ตัวเดียวกัน บน opencut.app ไม่มีแท็บ Sounds และปุ่ม Send feedback แผงขวาแสดงค่า Width / Height / X / Y / Rotation ส่วนตัวที่ติดตั้งจาก cf5e79e มีแท็บ Sounds และแผงขวาเป็น Position X/Y, Scale X/Y, Rotate ผมไล่ประวัติ commit แล้วพบว่าชื่อ “Position X” เพิ่งเข้ามาวันที่ 2 พ.ค. 2026 จึงน่าจะแปลว่า opencut.app ยังเป็นเวอร์ชันก่อนวันนั้น ข้อนี้ผมอนุมานเอง ยังไม่เจอประกาศทางการ ในซีรีส์นี้ ถ้าสองตัวต่างกันตรงไหน ผมจะบอกทั้งสองแบบ

ทาง A: ใช้บน opencut.app ไม่ต้องติดตั้งอะไร

ถ้าแค่อยากตัดคลิป ทางนี้ง่ายสุดครับ

  1. เปิด opencut.app ด้วยเบราว์เซอร์รุ่นใหม่ (ผมทดสอบกับ Google Chrome)
  2. กด Projects มุมขวาบน แล้วกด New project
  3. ครั้งแรกจะมีกล่อง “Welcome to OpenCut Beta!” ขึ้นมา กดปิดได้เลย
  4. ลากไฟล์วิดีโอมาวางในแผง Assets ซ้ายบน หรือกด Import
  5. ลากคลิปจาก Assets ลงไทม์ไลน์ด้านล่าง

หน้าตัดต่อของ opencut.app ธีมมืด มีคลิปทดสอบแถบสีแนวตั้งอยู่ในแผง Assets ภาพตัวอย่างตรงกลาง แผงขวาแสดง Transform มีช่อง Width, Height, X, Y และ Rotation และคลิปวางบนไทม์ไลน์ด้านล่างยาว 4 วินาที

ภาพหน้าจอ: opencut.app เปิดด้วย Chrome แบบ headless เมื่อ 9 ต.ค. 2026 คลิปแถบสีเป็นคลิปทดสอบที่ผมสร้างด้วย ffmpeg

ข้อควรรู้ของทางนี้

  • ไม่ต้องสมัครสมาชิก ผมสร้างโปรเจกต์ นำเข้าคลิป และวางลงไทม์ไลน์ได้โดยไม่ต้องล็อกอิน
  • โปรเจกต์อยู่ในเบราว์เซอร์เครื่องนั้น ถ้าล้างข้อมูลเว็บไซต์ (Clear site data) หรือเปิดโหมดไม่ระบุตัวตน โปรเจกต์ก็จะหายตามไปด้วย และเปิดจากเครื่องอื่นไม่ได้
  • ทางนี้ไม่มีแท็บ Sounds (คลังเสียงเอฟเฟกต์) ตอนทำเสียงในตอนที่ 5 เราจะนำเข้าไฟล์เสียงเองแทน

ทาง B: ติดตั้งในเครื่อง

ทางนี้เหมาะกับคนที่อยากได้เวอร์ชันล่าสุดของ classic อยากใช้แท็บ Sounds หรืออยากแก้โค้ดเอง ขั้นตอนมาจาก README กับ CONTRIBUTING.md ของ repo

ทดสอบจริงที่ไหน: ผมรันทุกคำสั่งบน Debian 13 (Linux x86_64) เครื่องเดียว ใช้ Bun 1.4.2, Node.js 22.23.2 และ Git 2.47.3 คำสั่งของ macOS กับ Windows ในบทนี้มาจากเอกสารทางการ ยังไม่ได้ลองบนเครื่องจริง ผมติดป้ายไว้ทุกจุด

ขั้นที่ 1: ติดตั้ง Bun

README ของ OpenCut ระบุของที่ต้องมีแค่ Bun ส่วน Docker เป็นตัวเลือก (ดูขั้นที่ 6) Bun คือตัวรัน JavaScript และตัวจัดการแพ็กเกจในตัวเดียว เทียบได้กับ Node.js + npm

ระบบคำสั่งสถานะ
macOS / Linuxcurl -fsSL https://bun.com/install | bashLinux: เครื่องผมมี Bun อยู่แล้ว เลยไม่ได้รันสคริปต์นี้ใหม่ / macOS: ตามเอกสาร
Windowspowershell -c "irm bun.sh/install.ps1|iex"ตามเอกสาร (ต้อง Windows 10 เวอร์ชัน 1809 ขึ้นไป)

บน Linux ต้องมี unzip ก่อน (sudo apt install unzip) ตามเอกสารของ Bun ส่วน macOS ต้องเป็น 13.0 ขึ้นไป ติดตั้งเสร็จแล้วเปิด terminal ใหม่ แล้วเช็กด้วย bun --version

ส่วน Node.js ไม่ได้อยู่ในรายการของที่ต้องมีใน README เครื่องผมมี Node.js 22 ติดตั้งอยู่แล้ว เลยยืนยันไม่ได้ว่าถ้าไม่มี Node.js เลยจะรันผ่านไหม

ขั้นที่ 2: โหลดโค้ดและเตรียมไฟล์ตั้งค่า

mkdir -p ~/opencut && cd ~/opencut
git clone https://github.com/OpenCut-app/opencut-classic.git
cd opencut-classic
git log -1 --format="%h %cs %s"
cp apps/web/.env.example apps/web/.env.local

ผมใช้ git clone ตรงๆ แต่ถ้าจะส่งโค้ดกลับไปที่โปรเจกต์ README ให้ fork ก่อน ซึ่งตอนนี้ไม่จำเป็นแล้ว เพราะ repo ถูก archive ไปแล้ว

Terminal ธีมมืด รัน bun --version ได้ 1.4.2, node --version ได้ v22.23.2, git clone opencut-classic สำเร็จ, git log ได้ commit cf5e79e9 วันที่ 2026-05-17 docs: readme และคำสั่ง cp ไฟล์ .env.example เป็น .env.local

Windows ใช้คำสั่งคัดลอกไฟล์ต่างออกไป (ตาม README ยังไม่ได้ทดสอบ)

Copy-Item apps/web/.env.example apps/web/.env.local

ไฟล์ .env.local คือไฟล์ตั้งค่าของเว็บแอป ค่าที่ให้มาใช้ได้เลยสำหรับเปิด editor ค่าที่ควรเปลี่ยนมีตัวเดียวคือ BETTER_AUTH_SECRET ซึ่งใช้กับระบบล็อกอิน CONTRIBUTING.md แนะนำให้สุ่มค่าด้วยคำสั่งนี้ แล้วเอาไปแทนค่า your_better_auth_secret

openssl rand -base64 32

ค่านี้เป็นความลับ ห้าม commit และห้ามแปะลงแชทหรือภาพหน้าจอ

ขั้นที่ 3: ติดตั้งแพ็กเกจ

bun install

Terminal ธีมมืด รัน bun install v1.4.2 ติดตั้ง next 16.2.4 และ opencut-wasm 0.2.10 จบด้วย 974 packages installed ใน 3.40 วินาที

ได้ 974 แพ็กเกจใน 3.40 วินาที (ผมตัดรายการแพ็กเกจกลางๆ ออกให้ภาพสั้นลง) เครื่องผมเคยโหลดแพ็กเกจพวกนี้มาก่อน ถ้าเป็นเครื่องใหม่น่าจะนานกว่านี้ ไฟล์ package.json ของโปรเจกต์ตั้ง [email protected] ไว้ แต่ Bun 1.4.2 ที่ผมใช้ก็ติดตั้งผ่าน และไม่แก้ไฟล์ bun.lock

ขั้นที่ 4: เปิด dev server

bun dev:web

Terminal ธีมมืด รัน bun dev:web ขึ้น turbo 2.9.6 และ Next.js 16.1.3 (Turbopack) Local http://localhost:3000 บรรทัด Network ถูกซ่อน IP ไว้ Ready in 1499ms แล้วมี GET / 200 และ GET /projects 200

ขึ้น Ready in 1499ms แล้วก็เปิด http://localhost:3000 ได้เลยครับ หน้าแรกกับหน้า Projects ตอบ 200 (เปิดครั้งแรกช้าหน่อยเพราะต้อง compile ก่อน หน้าแรกใช้ 4.2 วินาที) ในภาพผมซ่อนเลข IP ในบรรทัด Network ไว้ บรรทัดนั้นคือที่อยู่สำหรับเปิดจากเครื่องอื่นในวง LAN เดียวกัน

ระหว่างนี้จะมีข้อความว่า Turborepo กับ Next.js เก็บข้อมูลการใช้งานแบบไม่ระบุตัวตน (telemetry) ข้อความนี้ไม่ใช่ error ครับ ถ้าไม่อยากส่ง ให้อ่านวิธีปิดได้ตามลิงก์ที่มันพิมพ์มา

ขั้นที่ 5: เปิด editor แล้วลอง Export

หน้าแรกของ OpenCut ที่รันในเครื่อง ธีมมืด หัวข้อ The open source Video editor และปุ่ม Try early beta มุมล่างซ้ายมีปุ่ม N ของ Next.js และมุมล่างขวามีแถบเครื่องมือ React Scan

หน้าตาเหมือนเว็บจริง ต่างกันแค่มุมจอมีของแถมสำหรับนักพัฒนา ปุ่ม N มุมล่างซ้ายเป็นของ Next.js ส่วนแถบมุมล่างขวาที่มีตัวเลข FPS เป็นของ React Scan มาด้วยเพราะเรารันแบบ dev (ดูข้อ 2 ในหัวข้อแก้ปัญหา)

กด Projects จะเจอหน้าโปรเจกต์ว่างๆ

หน้า All projects ธีมมืด ข้อความ No projects yet ปุ่ม Create your first project ตรงกลาง และปุ่ม New project มุมขวาบน

กด New project แล้วจะเข้าหน้าตัดต่อ ครั้งแรกจะมีกล่องต้อนรับขึ้นมาเหมือนบนเว็บ

หน้าตัดต่อเบลออยู่ด้านหลัง มีกล่อง Welcome to OpenCut Beta! พร้อมข้อความ You're among the first to try OpenCut และปุ่ม Next

ผมทดสอบต่อด้วยคลิปทดสอบแนวตั้ง 1080×1920 ยาว 4 วินาทีที่สร้างด้วย ffmpeg นำเข้าผ่าน Import แล้วลากลงไทม์ไลน์

ffmpeg -f lavfi -i testsrc2=size=1080x1920:rate=30:duration=4 \
  -f lavfi -i sine=frequency=660:duration=4 \
  -c:v libx264 -pix_fmt yuv420p -c:a aac -shortest test-9x16.mp4

หน้าตัดต่อที่รันในเครื่อง คลิปทดสอบแถบสีแนวตั้งอยู่บนไทม์ไลน์ยาว 4 วินาที แผงขวาแสดง Position X, Position Y, Scale X, Scale Y และ Rotate ปุ่ม Send feedback กับ Export อยู่มุมขวาบน

เทียบกับภาพของ opencut.app ด้านบน จะเห็นว่าตัวที่รันในเครื่องมีปุ่ม Send feedback และแผงขวาเป็น Position / Scale ตรงกับที่เล่าไว้ในหัวข้อเลือกเวอร์ชัน

กด Export มุมขวาบน จะมีตัวเลือก 3 อย่าง

เมนู Export project เปิดอยู่มุมขวาบน มีหัวข้อ Format, Quality และ Audio และปุ่ม Export สีขาว

  • Format: MP4 (H.264) หรือ WebM (VP9)
  • Quality: Low, Medium, High (ตัวที่แนะนำ) และ Very high
  • Audio: ติ๊กเพื่อใส่เสียงในไฟล์

ผมใช้ค่าเริ่มต้นแล้วกด Export ได้ไฟล์ New project.mp4 เช็กด้วย ffprobe ได้ผลแบบนี้

stream|codec_name=h264|width=1080|height=1920|r_frame_rate=30/1
stream|codec_name=opus|r_frame_rate=0/0
format|duration=4.020000

ได้วิดีโอ H.264 ขนาด 1080×1920 ที่ 30 fps ยาว 4.02 วินาทีตามคลิปต้นฉบับ แสดงว่าตัวที่ติดตั้งในเครื่องตัดต่อแล้วส่งออกได้จริงตั้งแต่ยังไม่ต้องมี Docker มีข้อสังเกต 2 ข้อครับ

  • เสียงในไฟล์ MP4 เป็น Opus ไม่ใช่ AAC ตอนที่ 8 ผมจะลองว่า YouTube กับ Facebook รับไฟล์แบบนี้ได้ไหม
  • export คลิป 4 วินาทีนี้ใช้เวลา 26 วินาที เพราะเครื่องผมไม่มีการ์ดจอ และเบราว์เซอร์ที่ใช้ทดสอบเป็นแบบ headless เครื่องที่มีการ์ดจอน่าจะเร็วกว่านี้มาก

ขั้นที่ 6 (ไม่บังคับ): ฐานข้อมูลและ Redis ด้วย Docker

ถ้าแค่จะตัดต่อ ข้ามขั้นนี้ได้ครับ README เขียนไว้เองว่า Docker เป็นตัวเลือก ถ้าทำงานแค่ฝั่งหน้าเว็บก็ไม่ต้องใช้

ส่วนที่ต้องใช้ฐานข้อมูล PostgreSQL กับ Redis คือฝั่งเซิร์ฟเวอร์ของเว็บ ได้แก่ ระบบล็อกอิน การจำกัดจำนวนครั้งที่เรียก API (rate limit) และแท็บ Sounds ที่ค้นเสียงจาก Freesound ผมลองค้นเสียงตอนยังไม่เปิด Docker ได้ 500 กลับมา และ log ฟ้องว่า ECONNREFUSED ซึ่งแปลว่าต่อ Redis ไม่ได้

ถ้าจะเปิดส่วนนี้ ให้ติดตั้ง Docker ก่อน macOS กับ Windows ใช้ Docker Desktop (ตามเอกสาร ยังไม่ได้ทดสอบ) ส่วน Linux ผมลงจากแพ็กเกจของ Debian แล้วรันคำสั่งตาม README

docker compose up -d db redis serverless-redis-http
docker compose ps
cd apps/web && bun run db:migrate

Terminal ธีมมืด รัน docker compose up -d ได้ container redis, db และ serverless-redis-http สถานะ Started และ Healthy, docker compose ps แสดง db และ redis healthy พร้อมพอร์ต 5432, 6379 และ 8079 จากนั้น bun run db:migrate ขึ้น migrations applied successfully

ครั้งแรกใช้ 47 วินาที ส่วนใหญ่หมดไปกับการโหลด image ของ Postgres 17, Redis 7 และ serverless-redis-http (ตัวแปลงให้เว็บแอปคุยกับ Redis ผ่าน HTTP) คำสั่ง db:migrate อยู่ใน CONTRIBUTING.md แต่ไม่อยู่ใน README ถ้าข้ามไป ระบบล็อกอินจะยังไม่มีตารางในฐานข้อมูลให้ใช้

พอเปิด Docker แล้วค้นเสียงใหม่ error เปลี่ยนเป็น 401 พร้อมข้อความ Freesound API error: 401 {"detail":"Invalid token"} แปลว่าต่อ Redis ผ่านแล้ว แต่คีย์ Freesound ใน .env.local ยังเป็นค่าตัวอย่าง ถ้าจะใช้แท็บ Sounds ต้องขอคีย์จาก Freesound แล้วใส่ใน FREESOUND_CLIENT_ID กับ FREESOUND_API_KEY ผมยังไม่มีคีย์ เลยยังไม่ได้ลองส่วนนี้ ไว้ทำในตอนที่ 5

ถ้าจะเปิดเว็บใหม่หลังแก้ .env.local ต้องหยุด dev server (กด Ctrl+C) แล้วรัน bun dev:web ใหม่ ค่าที่แก้ถึงจะมีผล

เจอปัญหาอะไรบ้าง และแก้ยังไง

ทุกข้อด้านล่างผมเจอจริงบนเครื่องผมครับ ยกเว้นข้อ 6 ที่มาจากเอกสาร

1. bun run build:web ล้ม: has no exported member named 'isShortcutKey'

Terminal ธีมมืด รัน bun run build:web แล้วขึ้น Failed to compile ที่ src/actions/keybindings/persistence.ts บรรทัด 2 Type error ว่า @/actions/keybinding ไม่มี export ชื่อ isShortcutKey และจบด้วย ERROR run failed exited (1)

ผมลอง build แบบ production เพราะอยากได้ตัวที่ไม่มีของแถมสำหรับนักพัฒนา ปรากฏว่าโค้ดของ commit cf5e79e เรียกฟังก์ชัน isShortcutKey ที่ไม่มีอยู่จริง ตัวตรวจ TypeScript ตอน build เลยไม่ยอมให้ผ่าน แต่ตอนรันแบบ dev โปรแกรมไม่ได้ตรวจ type ก่อน เลยเปิดได้ปกติ

  • ทางแก้ที่ผมใช้: ใช้ bun dev:web ไปก่อน และ repo ถูก archive แล้ว บั๊กนี้คงไม่มีใครมาแก้
  • ระวัง: ถ้าจะ self-host ด้วย docker compose up -d แบบรันทุก service ไฟล์ apps/web/Dockerfile ก็เรียก bun run build เหมือนกัน เลยน่าจะล้มที่จุดเดียวกัน ข้อนี้ผมยังไม่ได้ลองเอง

2. มีกรอบสีม่วงกระพริบเต็มจอ

ตอนรันแบบ dev โปรเจกต์จะโหลด React Scan ซึ่งเป็นเครื่องมือที่วาดกรอบรอบส่วนของหน้าจอที่กำลังวาดใหม่ เปิดหน้า Projects ทีแรกจะเห็นกรอบม่วงซ้อนกันเต็มจอจนอ่านอะไรไม่ออก วิธีปิดคือกดสวิตช์สีม่วงในแถบมุมล่างขวา (ชื่อในโค้ดคือ “Outline Re-renders”) ให้เป็นสีเทา ผมปิดแล้วโหลดหน้าใหม่ กรอบก็ไม่กลับมาอีก

3. Unable to acquire lock at .../.next/dev/lock, is another instance of next dev running?

เจอตอนผมเผลอเปิด dev server ตัวที่สองในโฟลเดอร์เดียวกัน ทั้งที่ตัวแรกยังรันอยู่ (ถึงจะเปลี่ยนพอร์ตเป็น 3011 ก็ไม่ได้) วิธีแก้คือใช้ตัวที่เปิดอยู่แล้ว หรือกลับไปหน้าต่าง terminal ตัวแรก กด Ctrl+C ปิดก่อน แล้วค่อยเปิดใหม่

4. แท็บ Sounds ค้นเสียงไม่เจอ: 500 แล้วกลายเป็น 401

  • 500 + ECONNREFUSED ใน log แปลว่ายังไม่ได้เปิด Redis ให้ทำขั้นที่ 6
  • 401 Invalid token แปลว่า Redis ใช้ได้แล้ว แต่ยังไม่ได้ใส่คีย์ Freesound
  • ส่วนอื่นของ editor ไม่เกี่ยวกับสองข้อนี้ ตัดต่อและ export ได้ปกติ

5. Linux ที่ไม่มี systemd: Cannot connect to the Docker daemon

เครื่องที่ผมใช้เป็น Linux แบบไม่มี systemd หลังติดตั้ง Docker แล้ว service จึงไม่เริ่มเอง ผมต้องสั่ง sudo dockerd เปิดเองก่อน เครื่อง Linux ทั่วไปที่มี systemd ใช้ sudo systemctl start docker ได้เลย ส่วน macOS กับ Windows แค่เปิดแอป Docker Desktop ทิ้งไว้

ข้อนี้มีเรื่องเฉพาะเครื่องผมด้วยครับ container serverless-redis-http ขึ้นสถานะ healthy แต่ใน log ฟ้องว่าต่อ Redis ไม่ได้ เพราะ container บนเครื่องผมคุยกันเองไม่ได้ ซึ่งเป็นข้อจำกัดของ VM ที่ผมใช้ ไม่ใช่ของ OpenCut ตัว editor ไม่ได้รับผลกระทบ แต่ถ้าเครื่องคุณเจอข้อความ SRH: Unable to connect to the Redis server ให้เช็กว่า container ทั้งสามอยู่ใน network เดียวกัน

6. bun: command not found หลังติดตั้ง Bun (จากเอกสารของ Bun)

เปิด terminal ใหม่ก่อน ถ้ายังไม่เจอให้เพิ่ม ~/.bun/bin เข้า PATH ในไฟล์ ~/.bashrc หรือ ~/.zshrc ส่วน Windows ให้เพิ่ม %USERPROFILE%\.bun\bin เข้า Path ของผู้ใช้

สรุป: ทดสอบจริงอะไร อะไรมาจากเอกสาร

ขั้นตอนLinux (Debian 13)macOSWindows
ใช้บน opencut.app✅ ทดสอบแล้ว (Chrome)เหมือนกัน เพราะรันในเบราว์เซอร์เหมือนกัน
ติดตั้ง Bunมีอยู่แล้ว (1.4.2)📄 ตามเอกสาร📄 ตามเอกสาร
clone + .env.local + bun install✅ ทดสอบแล้ว📄 คำสั่งเดียวกับ Linux📄 ใช้ Copy-Item ตาม README
bun dev:web + import + export✅ ทดสอบแล้ว📄📄
Docker + db:migrate✅ ทดสอบแล้ว (Docker 26.1.5, Compose 2.26.1)📄 Docker Desktop📄 Docker Desktop
bun run build:web❌ ล้ม (ข้อ 1)น่าจะล้มเหมือนกัน เพราะเป็น error ในโค้ดน่าจะล้มเหมือนกัน
แท็บ Sounds⏸ ต้องมีคีย์ Freesound

Recap

  • รู้ว่าซีรีส์นี้ใช้ OpenCut classic (cf5e79e) และรู้ว่า opencut.app หน้าตาต่างจากตัวที่ติดตั้งเองเล็กน้อย
  • ทาง A: เปิด opencut.app → Projects → New project ได้
  • ทาง B: git clone → cp .env.example .env.local → bun install → bun dev:web แล้วเปิด http://localhost:3000 ได้
  • นำเข้าคลิป ลงไทม์ไลน์ แล้ว Export ได้ไฟล์ MP4
  • รู้ว่า Docker กับคีย์ Freesound ต้องใช้เฉพาะตอนจะใช้ล็อกอินหรือแท็บ Sounds
  • จำไว้ว่าโปรเจกต์อยู่ในเบราว์เซอร์ ล้างข้อมูลเว็บเมื่อไหร่ โปรเจกต์หายเมื่อนั้น

ตอนหน้า

ตอนที่ 2 เราจะทัวร์หน้าจอทั้ง 4 ส่วน (Assets, Preview, Properties และ Timeline) แล้วตั้งโปรเจกต์แนวตั้ง 1080×1920 สำหรับ Shorts/Reels พร้อมวางภาพพี่โชว์กับน้องกายลงฉากแรก แผนทั้งซีรีส์มี 8 ตอน จบด้วยคลิปพี่โชว์คุยกับน้องกายที่ export พร้อมอัปโหลดครับ