3 คะแนน โดย GN⁺ 2024-07-01 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

LosslessCut

LosslessCut เป็นเครื่องมือ GUI ข้ามแพลตฟอร์มที่อิงกับ FFmpeg สำหรับแก้ไขไฟล์วิดีโอและเสียงได้อย่างรวดเร็วโดยไม่สูญเสียข้อมูล เครื่องมือนี้ช่วยให้ตัดไฟล์วิดีโอขนาดใหญ่ที่ถ่ายจากกล้องวิดีโอ, GoPro, โดรน ฯลฯ ได้อย่างรวดเร็วเพื่อประหยัดพื้นที่จัดเก็บ นอกจากนี้ยังไม่จำเป็นต้องเข้ารหัสใหม่เมื่อเพิ่มแทร็กเพลงหรือคำบรรยายลงในวิดีโอ

ฟีเจอร์หลัก

  • ตัดฟอร์แมตวิดีโอและเสียงส่วนใหญ่แบบไม่สูญเสียข้อมูล
  • Smart cut (ฟีเจอร์ทดลอง)
  • ตัดเฉพาะบางส่วนของวิดีโอ/เสียงแบบไม่สูญเสียข้อมูล
  • จัดเรียงลำดับเซกเมนต์วิดีโอ/เสียงใหม่แบบไม่สูญเสียข้อมูล
  • รวม/ต่อไฟล์แบบไม่สูญเสียข้อมูลสำหรับไฟล์ที่มีพารามิเตอร์ codec เดียวกัน
  • รวมแทร็กใดก็ได้จากหลายไฟล์เข้าด้วยกัน (เช่น เพิ่มแทร็กเพลงหรือคำบรรยายลงในไฟล์วิดีโอ)
  • ลบแทร็กที่ไม่ต้องการ
  • เข้ารหัสใหม่หรือแทนที่เฉพาะบางแทร็ก
  • แยกทุกแทร็กออกจากไฟล์ (วิดีโอ, เสียง, คำบรรยาย, ไฟล์แนบ ฯลฯ)
  • เวิร์กโฟลว์หลายไฟล์ที่รวดเร็ว (ไม่มีการส่งออกแบบจำนวนมาก/แบตช์)
  • เวิร์กโฟลว์ด้วยคีย์ลัด
  • รีมักซ์วิดีโอ/เสียงไปยังฟอร์แมตคอนเทนเนอร์อื่นแบบไม่สูญเสียข้อมูล
  • ถ่ายสแนปช็อตความละเอียดเต็มจากวิดีโอเป็น JPEG/PNG
  • ส่งออกเฟรมวิดีโอเป็นภาพ (ทุกเฟรมที่ n, ทุกวินาที, เมื่อฉากเปลี่ยน)
  • ส่งออกเฉพาะช่วงเวลาที่เลือก
  • ตัวเลือกใส่ timestamp ต้นฉบับในชื่อไฟล์ภาพ
  • ป้อนเวลาจุดตัดด้วยตนเอง
  • ใช้ timecode offset แยกตามไฟล์ (โหลดอัตโนมัติจากไฟล์)
  • แก้ไข metadata ของไฟล์, metadata รายแทร็ก และ disposition รายแทร็ก
  • เปลี่ยน metadata การหมุน/ทิศทางของวิดีโอ
  • ดูข้อมูลทางเทคนิคของทุกแทร็ก
  • ซูมไทม์ไลน์และกระโดดไปยังคีย์เฟรม
  • ภาพขนาดย่อของวิดีโอและ waveform ของเสียง
  • บันทึก cut segment ลงในไฟล์โปรเจกต์
  • ดูล็อกคำสั่งล่าสุดของ FFmpeg
  • เลิกทำ/ทำซ้ำ
  • ใส่ป้ายกำกับให้ cut segment
  • ใส่คำอธิบายประกอบเซกเมนต์ด้วยแท็ก
  • นำเข้า/ส่งออกเซกเมนต์: เครื่องหมาย chapter ของ MP4/MKV, ไฟล์ข้อความ, YouTube, CSV, CUE, XML (DaVinci, Final Cut Pro) ฯลฯ
  • ตัวแก้ไข chapter mark แบบฝังใน MKV/MP4
  • ดูคำบรรยาย
  • คีย์ลัดที่ปรับแต่งได้
  • ตรวจจับฉากดำ, ตรวจจับเสียงเงียบ, ตรวจจับการเปลี่ยนฉาก
  • แบ่งไทม์ไลน์เป็นเซกเมนต์ตามความยาว L หรือจำนวน N
  • ปรับความเร็วของไฟล์วิดีโอหรือเสียง (เปลี่ยน FPS)
  • CLI และ HTTP API พื้นฐาน

ตัวอย่างการใช้งานแบบไม่สูญเสียข้อมูล

  • ลบโฆษณาออกจากรายการทีวีที่อัดไว้ (รีฟอร์แมตจาก TS เป็น MP4)
  • ลบแทร็กเสียงออกจากไฟล์
  • แยกแทร็กเพลงออกจากวิดีโอและตัดตามต้องการ
  • เพิ่มเพลงลงในวิดีโอ (หรือแทนที่แทร็กเสียงเดิม)
  • รวมแทร็กเสียงและวิดีโอจากการบันทึกแยกกัน
  • ฝังคำบรรยายภายนอกลงในวิดีโอ
  • เปลี่ยนวิดีโอ MKV แบบ H264/H265 เป็น MOV หรือ MP4 อย่างรวดเร็วเพื่อเล่นบน iPhone
  • นำเวลา cut จากเครื่องมืออื่นมาเป็น EDL (Edit Decision List, CSV) แล้วประมวลผลใน LosslessCut
  • ส่งออกเวลา cut เป็น CSV EDL เพื่อไปประมวลผลในเครื่องมืออื่น
  • ตัดไฟล์อย่างรวดเร็วด้วย chapter ของ MP4/MKV
  • ตัดวิดีโอ YouTube อย่างรวดเร็วตาม chapter (หรือเวลาของเพลงในคอมเมนต์)
  • เปลี่ยนภาษาของแทร็กเสียง/คำบรรยายในไฟล์
  • แนบ cover art/thumbnail ให้กับวิดีโอหรือเสียงจากไฟล์ JPEG ภายนอกหรือเฟรมบนไทม์ไลน์
  • เปลี่ยนผู้สร้าง, ชื่อเรื่อง, ตำแหน่ง GPS, เวลาในการบันทึกของวิดีโอ
  • แก้การหมุนของวิดีโอที่ตั้งค่า orientation flag ผิด
  • ทำซ้ำคลิปวิดีโอ/เสียง X ครั้ง (โดยไม่เข้ารหัสใหม่)
  • แปลงวิดีโอหรือบางส่วนของวิดีโอเป็นไฟล์ภาพ X ไฟล์ (ไม่สูญเสียข้อมูล)
  • แยกวิดีโอเป็นไฟล์ละหนึ่งฉาก
  • ตัดช่วงเงียบของเสียง/วิดีโอออก
  • แบ่งวิดีโอเป็นหลายเซกเมนต์เพื่อให้เป็นไปตามข้อจำกัด 140 วินาทีของ Twitter
  • ใส่คำอธิบายประกอบแต่ละเซกเมนต์ด้วยแท็กหนึ่งรายการขึ้นไป และใช้แท็กเหล่านี้เพื่อจัดระเบียบเซกเมนต์หรือสร้างโครงสร้าง/ลำดับชั้นของโฟลเดอร์ผลลัพธ์

ส่งออกเวลา cut เป็น YouTube chapter

  1. ส่งออกโดยเปิดใช้การรวม และเปิด "สร้าง chapter จากเซกเมนต์ที่รวมแล้ว"
  2. เปิดไฟล์ที่ส่งออก แล้วเลือก "นำเข้า chapter" ในกล่องโต้ตอบ
  3. ไฟล์ -> ส่งออกโปรเจกต์ -> YouTube chapter

เข้ารหัสใหม่เฉพาะแทร็กเสียงและคงแทร็กวิดีโอแบบไม่สูญเสียข้อมูล

  1. ส่งออกแต่ละแทร็กเป็นไฟล์แยก
  2. ใช้ Handbrake หรือเครื่องมือที่คล้ายกันเพื่อเข้ารหัสไฟล์เสียงใหม่ (สำหรับไฟล์ mp4 ให้เข้ารหัสเป็น AAC)
  3. เปิด video stream ที่แยกออกมาใน LosslessCut
  4. เปิดไฟล์เสียงที่เข้ารหัสแล้ว และเลือก "รวมทุกแทร็กจากไฟล์ใหม่"
  5. ส่งออก

เวิร์กโฟลว์หลายขั้นตอนขั้นสูง

เคล็ดลับ: สามารถใช้ LosslessCut หลายครั้งเพื่อตัดแต่ละแทร็กแยกจากกันได้

  1. เปิดไฟล์และส่งออกทุกแทร็กเป็นไฟล์แยก
  2. เปิดไฟล์แทร็กที่ส่งออกมาแยกอิสระและตัดตามต้องการ
  3. เพิ่มแทร็กกลับเข้าไปในวิดีโอและรวมเป็นวิดีโอเอาต์พุตเดียว

ดาวน์โหลด

หากต้องการสนับสนุนการพัฒนาอย่างต่อเนื่องของ LosslessCut และรับประโยชน์จากกระบวนการติดตั้งที่ปลอดภัยและเรียบง่าย รวมถึงการอัปเดตอัตโนมัติที่เสถียร ขอแนะนำให้พิจารณาดาวน์โหลดจากสโตร์ที่คุณต้องการ

ระบบปฏิบัติการที่รองรับ

  • Mac OS X: Intel DMG / Apple Silicon DMG
  • Windows: 7zip (Windows 7, 8 และ 8.1 ไม่รองรับตั้งแต่ v3.50.0 เป็นต้นไป)
  • Linux: x64 tar.bz2 / x64 AppImage / arm64 tar.bz2 / Raspberry Pi armv7l

ฟอร์แมตที่รองรับ

LosslessCut ใช้ตัวเล่นวิดีโอ HTML5 ของ Chromium และไม่ได้รองรับทุกฟอร์แมตและ codec ที่ FFmpeg รองรับแบบเนทีฟ โดยทั่วไปฟอร์แมตต่อไปนี้ใช้งานได้:

  • ฟอร์แมตวิดีโอ: MP4, MOV, WebM, Matroska, OGG, WAV
  • codec เสียง: FLAC, MP3, Opus, PCM, Vorbis, AAC
  • codec วิดีโอ: H264, AV1, Theora, VP8, VP9, H265 (ต้องใช้ตัวถอดรหัสฮาร์ดแวร์)

วิดีโอเดโม

  • ฟีเจอร์ทั่วไป
  • วิธีเพิ่ม thumbnail/cover art ลงใน MP4
  • วิธีเพิ่มเสียงหลายภาษาลงในวิดีโอ

เวิร์กโฟลว์ทั่วไป

  • ลากและวางไฟล์วิดีโอลงในตัวเล่น หรือใช้ /CTRL+O
  • กด SPACE เพื่อเล่น/หยุดชั่วคราว หรือใช้ ◀``▶, ,``. หรือวงล้อเมาส์/แทร็กแพดเพื่อเลื่อนไปข้างหน้าและย้อนกลับ
  • เลื่อน time marker เพื่อเลือกเวลาเริ่มและสิ้นสุดของ cut segment แล้วกด I เพื่อตั้งเวลาเริ่ม และ O เพื่อตั้งเวลาสิ้นสุด
  • ทุกเซกเมนต์จะถูก เก็บไว้ และส่งออกเป็นไฟล์ใหม่ หากต้องการเปลี่ยนพฤติกรรมนี้ สามารถใช้สัญลักษณ์ Yin Yang ☯️ เพื่อตั้งให้ ลบ เซกเมนต์ที่เลือก และส่งออกส่วน ระหว่าง เซกเมนต์แทน
  • หากต้องการเพิ่มหลายเซกเมนต์ ให้เลื่อนไปยังเวลาเริ่มที่ต้องการแล้วกด + จากนั้นเลือกเวลาเริ่ม/สิ้นสุดของเซกเมนต์ถัดไปด้วย I/O
  • หากต้องการรวมทุกเซกเมนต์ที่เลือกกลับเป็นไฟล์เดียวหลังตัด ให้สลับปุ่ม Separate files เป็น Merge cuts
  • หากต้องการส่งออกไปยังโฟลเดอร์ปลายทางเฉพาะ ให้กดปุ่ม Working dir unset (ค่าเริ่มต้น: โฟลเดอร์ของไฟล์อินพุต)
  • หากต้องการเปลี่ยนทิศทาง ให้กดปุ่ม หมุน
  • โดยค่าเริ่มต้น แทร็กเสียง วิดีโอ และคำบรรยายของไฟล์อินพุตจะถูกตัดและส่งออก กดปุ่ม Tracks เพื่อปรับแต่งและ/หรือเพิ่มแทร็กใหม่จากไฟล์อื่นได้
  • สามารถเลือกฟอร์แมตเอาต์พุตใหม่ได้
  • ในแผงเซกเมนต์ด้านขวา คลิกขวาที่เซกเมนต์เพื่อเลือกตัวเลือก หรือลากและวางเพื่อจัดลำดับใหม่ โดยจะปรากฏตามลำดับนี้ในผลลัพธ์ที่รวมแล้ว
  • เมื่อเสร็จแล้วให้กดปุ่ม Export (หรือ E) เพื่อดูภาพรวมของตัวเลือกการส่งออก
  • สามารถปรับตัวเลือกการส่งออกได้
  • กดส่งออกอีกครั้งเพื่อยืนยันการส่งออก
  • หากต้องการถ่าย JPEG/PNG snapshot ที่เวลาปัจจุบัน ให้กดปุ่ม กล้อง (หรือ C)
  • หากต้องการย้ายไฟล์ต้นฉบับไปยังถังขยะ ให้กดปุ่ม ถังขยะ
  • เพื่อผลลัพธ์ที่ดีที่สุด อาจต้องลองใช้ฟอร์แมตเอาต์พุตอื่น (Matroska รองรับได้เกือบทุกอย่าง) เปลี่ยนโหมดตัดคีย์เฟรม หรือปิดใช้งานบางแทร็ก
  • หากต้องการดูคีย์ลัดทั้งหมดของคีย์บอร์ดและเมาส์ ให้กด SHIFT + /
  • หมายเหตุ: ไฟล์วิดีโอต้นฉบับจะไม่ถูกแก้ไข แต่จะมีการสร้างไฟล์ที่มี timestamp from/to ในไดเรกทอรีเดียวกับไฟล์ต้นฉบับแทน

ความเห็นจาก GN⁺

  • LosslessCut เป็นเครื่องมือที่ช่วยแก้ไขไฟล์วิดีโอและเสียงได้อย่างรวดเร็วโดยไม่สูญเสียข้อมูล โดยเฉพาะมีประโยชน์สำหรับผู้ใช้ที่ต้องจัดการไฟล์ขนาดใหญ่
  • ทำงานบนพื้นฐานของ FFmpeg จึงให้ความเร็วสูงมาก และรองรับฟอร์แมตกับ codec ได้หลากหลาย
  • มีฟีเจอร์หลากหลาย เช่น smart cut, เวิร์กโฟลว์หลายไฟล์, คีย์ลัด ช่วยเพิ่มความสะดวกในการใช้งาน
  • เครื่องมือที่มีฟังก์ชันคล้ายกันได้แก่ Avidemux, Shotcut ฯลฯ และควรเปรียบเทียบข้อดีข้อเสียของแต่ละเครื่องมือ
  • เมื่อนำเทคโนโลยีใหม่หรือโอเพนซอร์ซมาใช้ ควรพิจารณาฟอร์แมตและ codec ที่รองรับ รวมถึงความใช้งานง่ายของอินเทอร์เฟซผู้ใช้

1 ความคิดเห็น

 
GN⁺ 2024-07-01
ความคิดเห็นจาก Hacker News
  • ดูเหมือนเป็นคู่แข่งโอเพนซอร์สของ VideoReDo

    • VideoReDo เป็นซอฟต์แวร์แบบปิดที่พัฒนาโดยนักพัฒนาอิสระ และเมื่อไม่นานมานี้ผู้พัฒนาได้เสียชีวิต
    • การตัดต่อวิดีโอแบบ "ไม่สูญเสียข้อมูล" คือการตัดเฉพาะบางส่วนของวิดีโอออกโดยไม่ต้องเข้ารหัสใหม่
  • การตัดต่อแบบไม่สูญเสียข้อมูลคือการรีมิกซ์คอนเทนเนอร์ต้นฉบับไปเป็นคอนเทนเนอร์ใหม่

    • ใช้ FFMpeg ในการทำงาน
    • ฟอร์แมตวิดีโอสมัยใหม่ทั้งหมดเป็นส่วนขยายของคอนเทนเนอร์ที่มีทั้งแทร็กวิดีโอและออดิโอหลายแทร็ก
    • แทร็กจะถูกเข้ารหัสเป็น Elementary Streams (ES) ด้วย codec ที่เหมาะสม
    • จากนั้นจะถูกรวมเข้าในคอนเทนเนอร์ผ่านกระบวนการ "muxing" และกำหนด timestamp ให้กับแต่ละ sample/frame
  • ES ถูกเข้ารหัสไว้ จึงไม่ได้ให้ความแม่นยำระดับเฟรม

    • มีเพียง I-Frame เท่านั้นที่ถอดรหัสได้อย่างสมบูรณ์
    • ลำดับ IPPBPPB... เรียกว่า GOP (Group of Pictures)
    • สามารถระบุประเภทเฟรมได้ผ่าน NAL unit
  • สามารถวิเคราะห์ ES bitstream เพื่อตรวจจับขอบเขตของ GOP ได้

    • เนื่องจากไม่สามารถตัดกลาง GOP ได้ จึงมีทางเลือกคือความแม่นยำน้อยกว่า 1 วินาที หรือถอดรหัสทั้ง GOP แล้วแทรก I-Frame
    • เป็นกระบวนการที่มีประสิทธิภาพด้วยการจัดการบิตอย่างรวดเร็วและการคัดลอกข้ามคอนเทนเนอร์
  • ใช้ LosslessCut เพื่อแยกวิดีโอการแข่งขันดำน้ำออกเป็นคลิปการดำน้ำแต่ละชุดได้อย่างมีประโยชน์

    • สามารถแยกการแข่งขัน 3 ชั่วโมงได้ในเวลาไม่ถึง 1 ชั่วโมง
  • มีการให้ลิงก์ที่เกี่ยวข้อง

    • LosslessCut: การตัดต่อวิดีโอ/ออดิโอแบบไม่สูญเสียข้อมูล
    • Lossless-cut: มีดพกสารพัดประโยชน์แห่งการตัดต่อวิดีโอ/ออดิโอแบบไม่สูญเสียข้อมูล
    • LosslessCut – ตัดไฟล์วิดีโออย่างรวดเร็วและไม่สูญเสียข้อมูล
    • Show HN: LosslessCut – เครื่องมือ GUI ข้ามแพลตฟอร์มสำหรับการตัดวิดีโออย่างรวดเร็วและไม่สูญเสียข้อมูล
  • มีการแชร์สคริปต์ bash ที่มีประโยชน์

    • เป็นสคริปต์สำหรับตัดวิดีโอด้วย ffmpeg
    • รับเวลาเริ่มต้น/สิ้นสุดเป็นหน่วยวินาทีแล้วประมวลผล
  • AVIDemux เป็นแอปเนทีฟที่ให้ความสามารถคล้ายกัน

    • เพื่อกันคำบ่นล่วงหน้าว่าแอป Electron มีขนาดเกิน 100MB
  • บน GitHub ใช้ไลเซนส์ GPL-2.0, บน snap store เป็นไลเซนส์ MIT และบน Mac OS APP store ราคา $19

  • สงสัยว่ามีเอกสารอธิบายเทคนิคการตัดแบบไม่สูญเสียข้อมูลร่วมกับ ffmpeg หรือไม่

  • เป็นแฟนตัวยงของ LosslessCut และใช้งานแทบทุกวัน

    • ใช้ตัดหรือแก้ไขการบันทึกหน้าจอ
    • เพราะเป็นแบบไม่สูญเสียข้อมูล การบันทึกจึงแทบจะเสร็จทันที
    • หากจำเป็นก็จะบีบอัดใหม่ด้วย Permute หรือเพิ่มเอฟเฟกต์ด้วย Davinci Resolve
  • สงสัยว่าสามารถดาวน์โหลดและตัดวิดีโอแบบไม่สูญเสียข้อมูลจากเซิร์ฟเวอร์ระยะไกลได้หรือไม่

    • ตอนนี้ใช้ ffmpeg เพื่อดาวน์โหลดและตัดวิดีโอจากเว็บไซต์อย่าง YouTube
    • ต้องเข้ารหัสใหม่แบบเรียลไทม์ระหว่างดาวน์โหลดวิดีโอ
    • คิดว่าไม่สามารถดาวน์โหลดและตัดแบบไม่สูญเสียข้อมูลได้ เพราะไม่มีข้อมูลวิดีโออยู่ในเครื่องโลคัล