3 poin oleh GN⁺ 2024-07-01 | 1 komentar | Bagikan ke WhatsApp
  • LosslessCut adalah GUI FFmpeg lintas platform untuk memproses file media seperti video, audio, dan subtitle dengan sangat cepat tanpa kehilangan kualitas
  • Fungsi utamanya adalah trimming/cutting lossless untuk memotong kasar file video besar dari kamera, GoPro, drone, dan sebagainya tanpa re-encoding yang lambat, menyisakan hanya bagian bagus dan membuang banyak data
  • Sebagian besar pekerjaan diproses lewat penyalinan data yang hampir langsung berbasis FFmpeg, serta mendukung tugas seperti menghapus iklan, menyusun ulang segmen, menggabungkan file dengan parameter codec yang sama, dan mengekstrak/mengganti/menghapus track
  • Karena menggunakan pemutar video Chromium HTML5, ada batasan pada format dan codec yang bisa diputar secara native, tetapi dengan pemutaran berbantuan FFmpeg, aplikasi dapat membuat proxy berkualitas rendah untuk dibuka, sementara pemotongan/ekspor sebenarnya dilakukan secara lossless pada file asli
  • Unduhan manual untuk macOS, Windows, dan Linux gratis, sementara instalasi melalui Mac App Store dan Microsoft Store dijelaskan sebagai cara dukungan yang menyediakan keamanan, instalasi mudah, dan pembaruan stabil otomatis

Masalah yang Diselesaikan LosslessCut

  • LosslessCut bertujuan menjadi GUI FFmpeg lintas platform yang menyediakan operasi cepat dan lossless untuk video, audio, subtitle, serta file media terkait
  • Kegunaan utamanya adalah mengekstrak dengan cepat hanya bagian yang dibutuhkan dari file video besar dan membuang data sisanya
    • File berukuran besar yang direkam dengan kamera video, GoPro, drone, dan sebagainya dapat dipotong kasar untuk menghemat ruang
    • Karena tidak melakukan re-encoding yang lambat, kehilangan kualitas dapat dihindari
  • Kecepatan yang sangat tinggi berasal dari struktur di mana FFmpeg menjalankan pekerjaan, sementara LosslessCut memanfaatkan penyalinan data yang hampir langsung

Fitur Pengeditan Utama

  • Mendukung cutting lossless untuk sebagian besar format video dan audio
  • Dapat memotong bagian tertentu dari video/audio secara lossless, sehingga bisa digunakan untuk tugas seperti menghapus iklan
  • Dapat menyusun ulang urutan segmen video/audio secara lossless
  • Mendukung penggabungan/penyambungan lossless untuk file arbitrer, tetapi memerlukan parameter codec yang sama seperti file yang berasal dari kamera yang sama
  • Smart cut tersedia sebagai fitur eksperimental

Operasi Track, Metadata, dan Container

  • Mendukung pengeditan multi-track/stream
    • Dapat mengombinasikan track arbitrer dari beberapa file untuk menambahkan musik atau track subtitle ke video
    • Dapat menghapus track yang tidak diperlukan
    • Dapat mengganti atau melakukan re-encoding hanya pada sebagian track
    • Dapat mengekstrak semua track, seperti video, audio, subtitle, dan lampiran, menjadi file terpisah
  • Dapat melihat informasi teknis semua track, serta mengedit metadata file, metadata per track, dan disposition per track
  • Dapat memilih track video/audio yang akan diputar, serta memutar beberapa track audio secara bersamaan
  • Dapat melakukan remux lossless video/audio ke format file container lain
  • Dapat mengubah metadata rotasi/orientasi video
  • Mendukung pengeditan penanda chapter bawaan MKV/MP4 dan tampilan subtitle

Timeline dan Workflow

  • Menyediakan workflow multi-file yang cepat, tetapi ekspor massal/batch belum tersedia
  • Mendukung workflow berbasis pintasan keyboard dan pintasan kustom
  • Dapat memasukkan waktu titik potong secara manual
  • Mendukung penerapan offset timecode per file dan pemuatan timecode otomatis dari file
  • Menyediakan zoom timeline, lompat frame/keyframe, thumbnail video, dan waveform audio
  • Dapat menyimpan segmen potong dalam file proyek
  • Dapat melihat log perintah FFmpeg terakhir yang dijalankan, lalu mengubah perintah terbaru dan menjalankannya kembali dari command line
  • Mendukung undo dan redo
  • Menyediakan bahasa ekspresi berbasis JS untuk kueri dan transformasi segmen tingkat lanjut
  • Dapat memberi label pada segmen potong dan menambahkan anotasi dengan tag

Ekstraksi Gambar, Deteksi, dan Pembuatan Segmen

  • Dapat mengekstrak snapshot resolusi penuh dari video sebagai JPEG/PNG
  • Dapat mengekspor rentang frame video menjadi gambar
    • Mendukung setiap frame ke-n, berdasarkan detik, berdasarkan pergantian scene, metode thumbnail optimal, dan lainnya
    • Dapat mengekspor hanya dari rentang waktu yang dipilih, yaitu segmen
    • Dapat menyertakan timestamp asli dalam nama file gambar
  • Mendukung deteksi layar hitam, deteksi audio senyap, dan deteksi pergantian scene
  • Dapat membagi timeline berdasarkan panjang L, ukuran X MB, N segmen, atau segmen acak
  • Dapat menghapus semua non-keyframe dengan sangat cepat, sehingga bisa digunakan untuk keperluan seperti timelapse

Impor/Ekspor dan Otomatisasi

  • Mendukung impor/ekspor segmen
    • Penanda chapter MP4/MKV
    • File teks
    • YouTube
    • CSV
    • CUE
    • XML untuk DaVinci dan Final Cut Pro
    • Format lainnya
  • Menyediakan CLI dasar dan HTTP API
  • Dapat mengunduh video secara lossless melalui HTTP, dengan HLS .m3u8 diberikan sebagai contoh
  • Dapat menampilkan track GPS bawaan DJI di peta

Contoh Penggunaan

  • Dapat memotong iklan dari acara TV yang direkam dan mengubah format dari TS ke MP4
  • Dapat menghapus track audio dari file
  • Dapat mengekstrak track musik dari video dan memotongnya sesuai panjang yang diperlukan
  • Dapat menambahkan musik ke video atau mengganti track audio yang ada
  • Dapat menggabungkan track audio yang direkam terpisah dengan track video
  • Dapat memasukkan subtitle eksternal ke dalam video
  • Dapat dengan cepat mengubah video H264/H265 MKV menjadi MOV atau MP4 untuk pemutaran di iPhone
  • Dapat mengimpor daftar waktu potong seperti EDL atau CSV yang dibuat di alat lain dan menjalankan pemotongan di LosslessCut
  • Dapat mengekspor daftar waktu potong sebagai CSV EDL untuk diproses di alat lain
  • Dapat dengan cepat memotong file berdasarkan chapter MP4/MKV
  • Dapat dengan cepat memotong video YouTube berdasarkan chapter atau waktu musik di komentar
  • Dapat mengubah bahasa track audio/subtitle
  • Dapat melampirkan cover art/thumbnail ke video/audio dari file JPEG eksternal atau frame timeline
  • Dapat mengubah pembuat, judul, lokasi GPS, dan waktu perekaman video
  • Dapat memperbaiki rotasi video yang memiliki flag orientasi keliru
  • Dapat mengulang klip video/audio sebanyak X kali dengan cepat tanpa re-encoding
  • Dapat mengonversi seluruh atau sebagian video menjadi X file gambar, tetapi operasi ini tidak lossless
  • Dapat membagi video secara lossless sehingga tiap scene menjadi satu file
  • Dapat memotong bagian senyap dari audio/video
  • Dapat membagi video menjadi segmen agar sesuai dengan ketentuan seperti batas 140 detik Twitter
  • Dapat memberi satu atau beberapa tag pada tiap segmen, lalu menggunakan tag untuk mengatur segmen atau membuat struktur folder output
  • Contoh tambahan tersedia di Recipe cookbook

Unduhan dan Cara Dukungan

  • Instalasi melalui Mac App Store dan Microsoft Store dijelaskan sebagai cara yang menyediakan keamanan, instalasi sederhana, dan pembaruan stabil otomatis
  • Snapcraft dan Flathub disediakan sebagai alternatif untuk Linux
  • Unduhan manual file executable tetap disediakan gratis
    • macOS: menyediakan DMG untuk Intel dan Apple Silicon, sementara PKG tidak berfungsi
    • Windows: menyediakan 7zip, dan Windows 7, 8, 8.1 tidak lagi didukung setelah v3.50.0
    • Linux: menyediakan x64 tar.bz2, x64 AppImage, arm64 tar.bz2, dan Raspberry Pi armv7l tar.bz2
    • Windows APPX dan macOS PKG tidak berfungsi
  • More releases dan Latest nightly builds 🧪 tersedia
  • LosslessCut menyatakan bahwa proyek ini dikelola oleh satu orang dan akan selalu tetap gratis serta open source
  • Pengguna dapat mendukung proyek atau berdonasi ke FFmpeg

Format yang Didukung dan Batasan Pemutaran

  • Karena LosslessCut menggunakan pemutar video Chromium HTML5, tidak semua format dan codec didukung secara native
  • Format file yang umumnya berfungsi adalah MP4, MOV, WebM, Matroska, OGG, WAV
  • Codec audio yang didukung adalah FLAC, MP3, Opus, PCM, Vorbis, AAC
  • Codec video yang didukung adalah H264, AV1, Theora, VP8, VP9, serta H265 jika ada decoder hardware
  • Codec dan format yang tidak ada dalam daftar juga dapat dikonversi lewat menu File ke format/codec yang didukung agar bisa dibuka
    • Disarankan mencoba opsi Fastest: FFmpeg-assisted playback terlebih dahulu
    • Dalam kasus ini, versi berkualitas rendah dari file dibuat dan dibuka di pemutar
    • Operasi pemotongan/ekspor sebenarnya dilakukan terhadap file asli, sehingga tetap lossless
    • File yang dapat didekode oleh FFmpeg berpotensi dapat dibuka

Dokumentasi dan Demo

1 komentar

 
GN⁺ 2024-07-01
Komentar di Hacker News
  • Tampaknya seperti pesaing open-source untuk aplikasi ajaib bernama VideoReDo yang dulu dipakai pada era PC media Windows
    Sayangnya, VideoReDo adalah perangkat lunak proprietari buatan pengembang indie, dan pengembangnya baru-baru ini meninggal dunia
    Untuk menjelaskan kepada orang yang belum paham apa itu penyuntingan video “lossless”: biasanya editor video mengimpor klip video/audio, menyimpan timeline dalam format khas aplikasi seperti Pitivi/Premiere/Final Cut, lalu mengekspor hasil akhir ke format keluaran seperti MP4/MOV dengan mengenkode ulang semuanya
    Jadi meskipun hanya ingin memotong 30–90 detik dari video berdurasi 1 jam, seluruh 1 jam itu harus dienkode ulang, dan jika pengaturan encoding sumber dan re-encoding tidak cocok, bisa terjadi perubahan kualitas gambar/suara yang tidak diinginkan
    Sebaliknya, editor lossless seperti ini tidak mengenkode ulang semuanya, melainkan memprosesnya dengan “memotong” bagian tersebut pada level byte

    • Benar. Perangkat lunak yang mendecode lalu secara naif mengenkode ulang pada dasarnya melakukan kompresi lossy dua kali
      Mengingatkan pada masa awal MP3 dulu, ketika orang mengunduh file 96kbps lalu mengenkode ulang ke 320kbps untuk “meningkatkan kualitas suara”
    • Seingat saya AviDemux juga bisa melakukan pemotongan lossless
    • Kalau penasaran cara kerjanya, stream video terkompresi bisa dipotong dan disambung secara arbitrer antar-frame pada titik awal frame lain yang kompatibel
      Decoding dan re-encoding hanya diperlukan ketika isi frame diubah, atau ketika struktur stream video harus disusun ulang agar kompatibel
      Sebagian besar format video adalah stream frame delta-encoded yang harus didecode dan ditampilkan secara berurutan. Bahkan untuk mundur satu frame saja, perlu decoding ulang dari awal, dan jika satu frame rusak, gambar akan hilang
      Karena itu encoder harus memasukkan keyframe untuk memulai ulang stream video secara berkala. Dengan codec dan resolusi yang sama, secara praktis valid untuk menyisipkan keyframe hampir di mana saja bahkan pada stream video eksternal
      Setahu saya editor non-linear yang benar tidak memakai cara ini. Kebanyakan cut sulit diperkirakan dengan trik pemotongan GOP[0] sederhana, dan tidak banyak orang yang mengedit klip yang sudah dienkode dalam format distribusi akhir
      Di tingkat profesional, banyak orang merekam dalam ProRes, dan ProRes memang sengaja tidak melakukan delta encoding[1]. Sebab delta encoding sebenarnya cukup buruk untuk penyuntingan video non-linear
      [0] Group of Pictures - satu keyframe dan semua frame delta-encoded sebelum keyframe berikutnya
      [1] Karena itu ukurannya sangat besar
    • Pernyataan “kalau memotong 1 menit dari video 1 jam, seluruh 1 jam harus dienkode ulang” agak kurang tepat
      Jika yang dipotong 1 menit, yang dienkode adalah durasi 1 menit. Video sumber mungkin perlu didecode lebih dari 1 menit, tetapi jarang sekali perlu mendecode seluruh 1 jam
    • Di macOS dulu Mpegstreamclip melakukan hal serupa, tetapi tidak kompatibel dengan Mac terbaru
  • Saat mendengar “lossless”, awalnya saya membayangkan penyuntingan format yang benar-benar lossless seperti ProRes, MJPEG2000, atau HuffYUV
    Namun yang pada akhirnya dilakukan alat ini adalah membungkus ulang container sumber ke container baru tanpa menyentuh stream dasarnya. Dengan kata lain, tidak ada re-encoding
    Tidak mengejutkan bahwa pekerjaan beratnya diserahkan ke FFmpeg, tetapi komunitas ada baiknya memahami bagaimana proses ini sebenarnya bekerja
    Singkatnya, format video modern seperti mp4, mov, avi, dan ts pada akhirnya adalah ekstensi untuk container yang dapat memuat beberapa track video dan audio. Track ini disebut Elementary Stream (ES), dan masing-masing dienkode dengan codec seperti H264/AVC, H265/HEVC, dan AAC
    Setelah itu, dalam proses muxing, semuanya digabungkan ke dalam container, dan setiap sample/frame diberi timestamp agar ES-ES tersebut tersinkronisasi
    Karena ES sudah dienkode, sulit mendapatkan akurasi per frame saat melakukan seek, dan frame yang bisa didecode sepenuhnya hanyalah I-frame. Frame P/B berikutnya didecode berdasarkan informasi dari I-frame. Urutan IPPBPPB... seperti ini disebut GOP
    Hal menariknya, tanpa mendecode stream pun, tipe frame dapat diketahui dengan melihat header unit NAL (Network Abstraction Layer). Misalnya byte tipe frame untuk I-frame H264 kira-kira seperti 0x07, dan header-nya 0x000001
    Jika digabungkan, kita bisa mengintip bitstream ES dan menemukan batas GOP tanpa decoding. Namun karena kita tidak bisa begitu saja memotong di tengah GOP, opsinya adalah menerima deviasi kurang dari 1 detik, atau mendecode seluruh GOP yang biasanya sekitar 30 frame lalu menyisipkan I-frame ke hasilnya
    Jadi pada akhirnya pekerjaan ini lebih mirip manipulasi bit yang sangat cepat dan penyalinan antar-container. Jika tujuannya adalah memotong video sumber menjadi bagian-bagian, inilah alasan proses tersebut sangat efisien

  • Artikel terkait:
    LosslessCut: lossless video/audio editing - https://news.ycombinator.com/item?id=33969490 - Des 2022 (153 komentar)
    Lossless-cut: The swiss army knife of lossless video/audio editing - https://news.ycombinator.com/item?id=24883030 - Okt 2020 (10 komentar)
    LosslessCut – Save space by quickly and losslessly trimming video files - https://news.ycombinator.com/item?id=22026412 - Jan 2020 (1 komentar)
    Show HN: LosslessCut – Cross-platform GUI tool for fast, lossless video cutting - https://news.ycombinator.com/item?id=12885585 - Nov 2016 (33 komentar)

  • Sebagai referensi, ada skrip bash yang dipakai untuk membuat potongan ffmpeg. Ini didasarkan pada saran yang cukup berguna dari Stack Overflow, dan inputnya adalah file yang berisi waktu mulai/akhir dalam detik, satu baris per segmen
    Jika videonya tidak punya suara, cukup hilangkan bagian atrim/outa dan hampir sama saja cara kerjanya. Beberapa segmen dipotong dengan trim, atrim, setpts, asetpts, lalu disambung dengan filter concat

    • Di mana -c copy atau -c:v copy -c:a copy?
  • Sebelum ada yang mengeluh bahwa ini adalah aplikasi Electron berukuran lebih dari 100 MB, perlu diketahui bahwa AVIDemux adalah aplikasi native dan melakukan hal yang hampir sama

  • Saya menemukan aplikasi ini minggu lalu dan sangat berguna
    Saya merekam seluruh kompetisi loncat indah dengan kamera kecil di sisi kolam, dan ingin membaginya menjadi klip untuk tiap adegan loncatan
    Di LosslessCut, saya bisa memutar secepat yang saya mau, dan untuk membedakan jeda antar-atlet lewat suara, kecepatan sedikit di atas 300% adalah maksimum yang bisa saya pakai
    Setiap kali skor tiap loncatan diumumkan, saya menekan B, lalu setelah selesai untuk semua loncatan, saya mengklik ekspor. Kompetisi 3 jam itu saya pecah dalam kurang dari satu jam menjadi klip-klip bernama rapi yang bisa dibagikan ke tiap atlet dan pelatih

  • Saya sangat menyukai LosslessCut dan memakainya hampir setiap hari
    Biasanya saya memakainya untuk memotong atau mengedit rekaman layar; karena lossless, menyimpan video hasil edit hampir langsung selesai
    Pada dasarnya ini mendekati GUI untuk ffmpeg
    Kalau perlu dikompresi ulang, saya memakai Permute; kalau perlu menambahkan efek atau melakukan editing lossy, saya memakai Davinci Resolve

    • Saya baru pertama kali mendengar Permute, tetapi saya juga memakai LosslessCut dan Davinci dengan cara serupa. Apakah yang ini? https://software.charliemonroe.net/permute/
      Saya penasaran apa yang ditawarkannya dibanding Handbrake atau sekadar memanggil ffmpeg langsung. Kelihatannya aplikasi berbayar, tapi saya tidak keberatan membayar biaya software kalau memang lebih baik daripada opsi gratis yang ada
  • Di GitHub lisensinya GPL-2.0, di Snap Store lisensinya MIT, dan di Mac App Store harganya 19 dolar

    • Unduhan gratis untuk semua platform juga tersedia
  • Saya penasaran apakah mungkin memotong sambil mengunduh secara lossless video dari server jarak jauh
    Saat ini saya memakai skrip bash untuk ffmpeg yang saya dapat dari Stack Overflow untuk hanya mengunduh sebagian video dari tempat seperti YouTube, tetapi saat ini harus melakukan re-encoding secara langsung saat mengunduh
    Untuk sementara saya menganggap video seperti ini mustahil diunduh dan dipotong secara lossless karena informasi video seperti keyframe tidak ada secara lokal. Saya akan senang kalau ada yang bisa membuktikan saya salah

    • Dulu saya pernah memakai cara seperti ini bersama yt-dlp untuk mengekstrak sebagian video. 313 hanya stream video 4K, tetapi sepertinya juga akan bekerja pada video yang punya stream audio
      ffmpeg -ss 5:40 -i $(yt-dlp -f 313 -g https://www.youtube.com/watch?v=3SykjY3GdMs) -acodec copy -vcodec copy -t 20 waterdrop_mountainlake.mkv
  • Saya baru belakangan ini mengetahui aplikasi ini dan menyukainya
    Sekarang sulit dipercaya bahwa dulu saya selalu membuka instance penuh Blender dan proyek video hanya untuk memotong klip, dan itu cukup sering saya lakukan