LosslessCut: Pisau Swiss Army untuk Pengeditan Video/Audio Lossless
(github.com/mifi)- 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
.m3u8diberikan 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, sertaH265jika ada decoder hardware - Codec dan format yang tidak ada dalam daftar juga dapat dikonversi lewat menu
Fileke 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
- Situs web resminya adalah LosslessCut.app
- Panduan mulai, FAQ, dan dokumentasi penggunaan tersedia di Getting started, FAQ and usage documentation
- Pemecahan masalah, isu yang diketahui, dan batasan tersedia di Troubleshooting and known issues and limitations
- Panduan kontribusi tersedia di Contributing
- Demo video membahas fitur umum, penambahan thumbnail/cover art MP4, dan penambahan audio multibahasa
1 komentar
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
Mengingatkan pada masa awal MP3 dulu, ketika orang mengunduh file 96kbps lalu mengenkode ulang ke 320kbps untuk “meningkatkan kualitas suara”
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
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
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 filterconcat-c copyatau-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 pelatihSaya 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 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
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
313hanya stream video 4K, tetapi sepertinya juga akan bekerja pada video yang punya stream audioffmpeg -ss 5:40 -i $(yt-dlp -f 313 -g https://www.youtube.com/watch?v=3SykjY3GdMs) -acodec copy -vcodec copy -t 20 waterdrop_mountainlake.mkvSaya 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