- LosslessCut là một FFmpeg GUI đa nền tảng để xử lý cực nhanh và không mất dữ liệu các tệp media như video, audio, phụ đề
- Tính năng cốt lõi là trim/cắt không mất dữ liệu, giúp cắt thô các tệp video lớn từ camera, GoPro, drone... để chỉ giữ lại phần tốt và loại bỏ nhiều dữ liệu mà không cần tái mã hóa chậm chạp
- Hầu hết tác vụ được xử lý bằng cơ chế gần như sao chép dữ liệu trực tiếp dựa trên FFmpeg, hỗ trợ các công việc như xóa quảng cáo, sắp xếp lại segment, gộp các tệp có cùng tham số codec, trích xuất/thay thế/xóa track
- Do sử dụng trình phát video Chromium HTML5 nên có giới hạn về định dạng và codec có thể phát native, nhưng có thể tạo proxy chất lượng thấp bằng phát lại có hỗ trợ FFmpeg để mở, còn việc cắt/xuất thực tế vẫn được thực hiện không mất dữ liệu trên tệp gốc
- Tải thủ công cho macOS, Windows, Linux là miễn phí; cài đặt qua Mac App Store và Microsoft Store được giới thiệu như một hình thức hỗ trợ, cung cấp bảo mật, cài đặt đơn giản và cập nhật ổn định tự động
Vấn đề mà LosslessCut giải quyết
- LosslessCut hướng tới trở thành một FFmpeg GUI đa nền tảng, cung cấp các thao tác nhanh và không mất dữ liệu cho video, audio, phụ đề và các tệp media liên quan
- Mục đích chính là nhanh chóng trích xuất những đoạn cần thiết từ các tệp video lớn và loại bỏ phần dữ liệu còn lại
- Có thể cắt thô các tệp dung lượng lớn được quay từ máy quay video, GoPro, drone... để tiết kiệm dung lượng
- Vì không tái mã hóa chậm nên tránh được suy giảm chất lượng
- Tốc độ rất cao đến từ việc FFmpeg thực hiện công việc, còn LosslessCut tận dụng cấu trúc gần như sao chép dữ liệu trực tiếp
Các tính năng chỉnh sửa chính
- Hỗ trợ cắt không mất dữ liệu cho hầu hết định dạng video và audio
- Có thể cắt bỏ một phần của video/audio mà không mất dữ liệu, hữu ích cho các tác vụ như xóa quảng cáo
- Có thể sắp xếp lại thứ tự các segment video/audio mà không mất dữ liệu
- Hỗ trợ gộp/nối không mất dữ liệu các tệp bất kỳ, nhưng cần cùng tham số codec như các tệp từ cùng một camera
- Smart cut được cung cấp dưới dạng tính năng thử nghiệm
Làm việc với track, metadata và container
- Hỗ trợ chỉnh sửa nhiều track/stream
- Có thể kết hợp các track tùy ý từ nhiều tệp để thêm nhạc hoặc track phụ đề vào video
- Có thể xóa các track không cần thiết
- Có thể thay thế hoặc tái mã hóa chỉ một số track
- Có thể trích xuất tất cả track như video, audio, phụ đề, tệp đính kèm... thành từng tệp riêng
- Có thể xem thông tin kỹ thuật của mọi track, đồng thời chỉnh sửa metadata tệp, metadata theo từng track và disposition của từng track
- Có thể chọn track video/audio để phát, và phát đồng thời nhiều track audio
- Có thể remux video/audio sang định dạng tệp container khác mà không mất dữ liệu
- Có thể thay đổi metadata xoay/hướng của video
- Hỗ trợ chỉnh sửa chapter mark nhúng trong MKV/MP4 và xem phụ đề
Timeline và quy trình làm việc
- Cung cấp quy trình làm việc nhanh với nhiều tệp, nhưng chưa có xuất hàng loạt/batch quy mô lớn
- Hỗ trợ quy trình làm việc xoay quanh phím tắt và phím tắt tùy chỉnh
- Có thể nhập thủ công thời gian điểm cắt
- Hỗ trợ áp dụng offset timecode theo từng tệp và tự động tải timecode từ tệp
- Cung cấp phóng to timeline, nhảy frame/keyframe, thumbnail video, waveform audio
- Có thể lưu các segment cắt vào tệp dự án
- Có thể xem log lệnh FFmpeg được chạy gần nhất, chỉnh sửa lệnh gần đây và chạy lại trên dòng lệnh
- Hỗ trợ hoàn tác và làm lại
- Cung cấp ngôn ngữ biểu thức dựa trên JS cho truy vấn và biến đổi segment nâng cao
- Có thể gắn nhãn cho segment cắt và chú thích bằng tag
Trích xuất ảnh, phát hiện và tạo segment
- Có thể trích xuất snapshot độ phân giải đầy đủ từ video sang JPEG/PNG
- Có thể xuất một dải frame video thành ảnh
- Hỗ trợ mỗi khung hình thứ n, theo giây, theo điểm chuyển cảnh, hoặc cách chọn thumbnail tối ưu
- Có thể chỉ xuất trong phạm vi thời gian đã chọn, tức là trong segment
- Có thể đưa timestamp gốc vào tên tệp ảnh
- Hỗ trợ phát hiện màn hình đen, âm thanh im lặng và chuyển cảnh
- Có thể chia timeline theo độ dài L, kích thước X MB, N segment hoặc segment ngẫu nhiên
- Có thể xóa toàn bộ non-keyframe rất nhanh, hữu ích cho các mục đích như timelapse
Nhập/xuất và tự động hóa
- Hỗ trợ nhập/xuất segment
- Chapter mark MP4/MKV
- Tệp văn bản
- YouTube
- CSV
- CUE
- XML cho DaVinci, Final Cut Pro
- Các định dạng khác
- Cung cấp CLI cơ bản và HTTP API
- Có thể tải video không mất dữ liệu qua HTTP, ví dụ như HLS
.m3u8 - Có thể hiển thị track GPS nhúng của DJI trên bản đồ
Ví dụ sử dụng
- Có thể cắt quảng cáo khỏi một chương trình TV đã ghi và đổi định dạng từ TS sang MP4
- Có thể xóa track audio khỏi tệp
- Có thể trích xuất track nhạc từ video và cắt về độ dài cần thiết
- Có thể thêm nhạc vào video hoặc thay thế track audio hiện có
- Có thể kết hợp audio ghi riêng với track video
- Có thể nhúng phụ đề ngoài vào video
- Có thể nhanh chóng đổi video H264/H265 dạng MKV sang MOV hoặc MP4 để phát trên iPhone
- Có thể nhập danh sách thời gian cắt như EDL, CSV được tạo từ công cụ khác để thực hiện cắt trong LosslessCut
- Có thể xuất danh sách thời gian cắt thành CSV EDL để xử lý bằng công cụ khác
- Có thể cắt nhanh tệp dựa trên chapter mark MP4/MKV
- Có thể nhanh chóng cắt YouTube video theo chapter hoặc mốc thời gian nhạc trong bình luận
- Có thể thay đổi ngôn ngữ của track audio/phụ đề
- Có thể đính kèm cover art/thumbnail vào video/audio từ tệp JPEG ngoài hoặc từ frame trên timeline
- Có thể thay đổi tác giả, tiêu đề, vị trí GPS, thời gian ghi của video
- Có thể sửa xoay cho video có cờ hướng bị đặt sai
- Có thể lặp nhanh clip video/audio X lần mà không tái mã hóa
- Có thể chuyển toàn bộ hoặc một phần video thành X tệp ảnh, nhưng thao tác này không phải không mất dữ liệu
- Có thể chia video không mất dữ liệu để mỗi cảnh thành một tệp
- Có thể cắt bỏ các đoạn im lặng trong audio/video
- Có thể chia video thành các segment để đáp ứng các điều kiện như giới hạn 140 giây của Twitter
- Có thể gắn một hoặc nhiều tag cho mỗi segment, và dùng tag để sắp xếp segment hoặc tạo cấu trúc thư mục đầu ra
- Có thêm ví dụ trong Recipe cookbook
Tải xuống và hình thức hỗ trợ
- Cài đặt qua Mac App Store và Microsoft Store được giới thiệu là cách cung cấp bảo mật, cài đặt đơn giản và cập nhật ổn định tự động
- Snapcraft và Flathub được cung cấp như lựa chọn thay thế trên Linux
- Tải thủ công tệp thực thi vẫn tiếp tục miễn phí
- macOS: cung cấp DMG cho Intel, Apple Silicon; PKG không hoạt động
- Windows: cung cấp 7zip; Windows 7, 8, 8.1 không còn được hỗ trợ sau v3.50.0
- Linux: cung cấp x64 tar.bz2, x64 AppImage, arm64 tar.bz2, Raspberry Pi armv7l tar.bz2
- Windows APPX và macOS PKG không hoạt động
- Có More releases và Latest nightly builds 🧪
- LosslessCut do một người duy trì và khẳng định sẽ luôn là mã nguồn mở miễn phí
- Người dùng có thể hỗ trợ dự án hoặc quyên góp cho FFmpeg
Định dạng hỗ trợ và giới hạn phát lại
- LosslessCut dùng trình phát video Chromium HTML5, nên không phải mọi định dạng và codec đều được hỗ trợ native
- Các định dạng tệp thường hoạt động là
MP4,MOV,WebM,Matroska,OGG,WAV - Các codec audio được hỗ trợ là
FLAC,MP3,Opus,PCM,Vorbis,AAC - Các codec video được hỗ trợ là
H264,AV1,Theora,VP8,VP9, vàH265khi có bộ giải mã phần cứng - Các codec và định dạng ngoài danh sách cũng có thể được chuyển sang định dạng/codec được hỗ trợ từ menu
Fileđể mở- Trước tiên, nên thử tùy chọn Fastest: FFmpeg-assisted playback
- Trong trường hợp này, một phiên bản chất lượng thấp của tệp sẽ được tạo và mở trong trình phát
- Tác vụ cắt/xuất thực tế được thực hiện trên tệp gốc nên vẫn không mất dữ liệu
- Bất kỳ tệp nào FFmpeg có thể giải mã đều có khả năng mở được
Tài liệu và demo
- Trang web chính thức là LosslessCut.app
- Hướng dẫn bắt đầu, FAQ và tài liệu sử dụng có tại Getting started, FAQ and usage documentation
- Khắc phục sự cố, các vấn đề đã biết và giới hạn có tại Troubleshooting and known issues and limitations
- Hướng dẫn đóng góp có tại Contributing
- Demo video bao gồm các tính năng phổ biến, thêm thumbnail/cover art cho MP4 và thêm audio đa ngôn ngữ
1 bình luận
Ý kiến trên Hacker News
Trông giống một đối thủ mã nguồn mở của ứng dụng kỳ diệu tên VideoReDo mà tôi từng dùng hồi còn máy PC media chạy Windows
Đáng tiếc là VideoReDo là phần mềm độc quyền do một lập trình viên indie tạo ra, và nhà phát triển đó gần đây đã qua đời
Để giải thích cho những ai chưa hình dung được chỉnh sửa video “không mất dữ liệu” là gì: thông thường, trình biên tập video sẽ nhập các clip video/âm thanh, lưu timeline theo định dạng riêng của ứng dụng như Pitivi/Premiere/Final Cut, rồi khi xuất bản hoàn chỉnh ra định dạng đầu ra như MP4/MOV thì mã hóa lại toàn bộ
Vì vậy, ngay cả khi chỉ muốn cắt bỏ 30–90 giây khỏi một video dài 1 giờ, bạn vẫn phải mã hóa lại toàn bộ 1 giờ; nếu thiết lập mã hóa gốc và mã hóa lại không khớp, chất lượng hình/âm có thể thay đổi ngoài ý muốn
Ngược lại, các trình biên tập không mất dữ liệu kiểu này không mã hóa lại toàn bộ, mà xử lý theo kiểu “cắt” đúng đoạn đó ở mức byte
Làm tôi nhớ thời kỳ đầu MP3, có người tải file 96kbps rồi mã hóa lại thành 320kbps để “cải thiện chất lượng âm thanh”
Việc giải mã và mã hóa lại chỉ cần thiết khi phải thay đổi nội dung frame, hoặc phải tái cấu trúc luồng video để tương thích
Phần lớn định dạng video là luồng các frame mã hóa delta cần được giải mã và hiển thị theo thứ tự. Chỉ cần muốn lùi lại một frame cũng phải giải mã lại từ đầu, và nếu một frame bị hỏng thì bạn sẽ mất hình ảnh
Vì vậy encoder phải chèn keyframe để định kỳ khởi động lại luồng video. Nếu cùng codec và độ phân giải, về thực chất việc chèn keyframe vào luồng video bên ngoài ở gần như bất kỳ đâu cũng hợp lệ
Theo tôi biết, các trình biên tập phi tuyến đúng nghĩa không dùng cách này. Phần lớn các đoạn cắt khó có thể xấp xỉ bằng mẹo cắt GOP[0] đơn giản, và cũng không nhiều người chỉnh sửa clip đã được mã hóa ở định dạng phân phối cuối cùng
Ở cấp độ chuyên nghiệp, nhiều người ghi hình bằng ProRes, mà ProRes cố ý không dùng mã hóa delta[1]. Lý do là mã hóa delta thực sự khá tệ cho biên tập video phi tuyến
[0] Group of Pictures - một keyframe và tất cả các frame mã hóa delta trước keyframe kế tiếp
[1] Vì vậy dung lượng của nó cực kỳ lớn
Nếu là cắt 1 phút, phần được mã hóa là 1 phút. Video gốc có thể phải được giải mã nhiều hơn 1 phút, nhưng hiếm khi phải giải mã toàn bộ 1 giờ
Thấy chữ “không mất dữ liệu” ban đầu tôi nghĩ đến việc biên tập các định dạng thật sự lossless như ProRes, MJPEG2000, HuffYUV
Nhưng việc công cụ này làm rốt cuộc là đóng gói lại container gốc sang container mới, trong khi không đụng tới các luồng cơ bản. Tức là không có mã hóa lại
Không ngạc nhiên khi phần việc nặng được giao cho FFmpeg, nhưng cộng đồng nên hiểu quy trình này thực sự hoạt động như thế nào
Nói ngắn gọn, các định dạng video hiện đại như mp4, mov, avi, ts rốt cuộc là phần mở rộng của các container có thể chứa nhiều track video/âm thanh. Các track này được gọi là luồng cơ bản (Elementary Stream, ES), và mỗi luồng được mã hóa bằng các codec như H264/AVC, H265/HEVC, AAC
Sau đó, trong quá trình muxing, chúng được gộp vào container, và mỗi sample/frame được gắn timestamp để các ES được đồng bộ
Vì ES đã được mã hóa nên khi tua/tìm kiếm rất khó đạt độ chính xác đến từng frame; những frame có thể giải mã hoàn chỉnh chỉ là I-frame. Các P/B-frame phía sau được giải mã dựa trên thông tin của I-frame. Chuỗi IPPBPPB... như vậy được gọi là GOP
Điểm thú vị là ngay cả khi không giải mã luồng, chỉ cần nhìn header của các đơn vị NAL (Network Abstraction Layer) là có thể biết loại frame. Ví dụ, byte loại frame của I-frame H264 đại khái giống 0x07, còn header là 0x000001
Tổng hợp lại, ta có thể nhìn vào bitstream ES và tìm ranh giới GOP mà không cần giải mã. Tuy nhiên không thể cứ thế cắt ngay giữa GOP, nên hoặc chấp nhận sai số dưới 1 giây, hoặc giải mã toàn bộ GOP thường khoảng 30 frame rồi chèn I-frame vào kết quả
Vì vậy, rốt cuộc việc cần làm rất gần với thao tác bit cực nhanh và sao chép giữa các container. Nếu mục tiêu là cắt video gốc thành các đoạn, đây chính là lý do quy trình này rất hiệu quả
Các bài liên quan:
LosslessCut: lossless video/audio editing - https://news.ycombinator.com/item?id=33969490 - Dec 2022 (153 comments)
Lossless-cut: The swiss army knife of lossless video/audio editing - https://news.ycombinator.com/item?id=24883030 - Oct 2020 (10 comments)
LosslessCut – Save space by quickly and losslessly trimming video files - https://news.ycombinator.com/item?id=22026412 - Jan 2020 (1 comment)
Show HN: LosslessCut – Cross-platform GUI tool for fast, lossless video cutting - https://news.ycombinator.com/item?id=12885585 - Nov 2016 (33 comments)
Nhân tiện, có một script bash dùng để tạo các đoạn cắt bằng ffmpeg. Nó dựa trên một gợi ý khá hữu ích trên Stack Overflow, và đầu vào là một tệp ghi thời gian bắt đầu/kết thúc theo giây, mỗi dòng một cặp
Nếu video không có âm thanh thì chỉ cần bỏ phần atrim/outa là nó hoạt động gần như tương tự. Cách làm là cắt nhiều đoạn bằng
trim,atrim,setpts,asetpts, rồi nối chúng lại bằng bộ lọcconcat-c copyhay-c:v copy -c:a copynằm ở đâu?Nói trước phòng khi có người phàn nàn rằng đây là một ứng dụng Electron hơn 100MB: AVIDemux là ứng dụng native và làm được gần như cùng việc
Tôi mới phát hiện ứng dụng này tuần trước và thấy cực kỳ hữu ích
Tôi đã quay toàn bộ một giải thi đấu nhảy cầu bằng một camera nhỏ bên cạnh hồ bơi, và muốn chia thành các clip riêng cho từng lần nhảy
Trong LosslessCut, tôi có thể phát nhanh tùy ý; để phân biệt khoảng trống giữa các vận động viên bằng âm thanh thì tốc độ hơn 300% một chút là mức tối đa tôi dùng được
Mỗi khi điểm của một cú nhảy được công bố, tôi nhấn
B, rồi sau khi làm xong với tất cả các cú nhảy thì bấm xuất. Tôi đã chia một cuộc thi dài 3 giờ thành các clip được đặt tên gọn gàng để chia sẻ cho từng vận động viên và huấn luyện viên, trong chưa đầy một giờTôi rất thích LosslessCut và dùng gần như hằng ngày
Chủ yếu dùng để cắt hoặc chỉnh sửa bản ghi màn hình; vì là không mất dữ liệu nên lưu video đã chỉnh gần như xong ngay lập tức
Về cơ bản nó gần như là GUI cho ffmpeg
Nếu cần nén lại thì tôi dùng Permute, còn nếu cần thêm hiệu ứng hoặc chỉnh sửa có mất dữ liệu thì dùng Davinci Resolve
Tôi tò mò nó cung cấp thêm gì so với Handbrake hoặc chỉ gọi trực tiếp ffmpeg. Trông có vẻ là ứng dụng trả phí, nhưng nếu thực sự tốt hơn các lựa chọn miễn phí hiện có thì tôi sẵn sàng trả tiền mua phần mềm
Trên GitHub là giấy phép GPL-2.0, trên Snap Store là giấy phép MIT, còn trên Mac App Store thì giá 19 đô la
Tôi thắc mắc liệu có thể vừa tải video từ máy chủ từ xa vừa cắt không mất dữ liệu hay không
Hiện tại tôi dùng một script bash cho ffmpeg lấy từ Stack Overflow để chỉ tải một phần video từ những nơi như YouTube, nhưng hiện giờ phải tái mã hóa ngay trong lúc tải
Tạm thời tôi cho rằng vì cục bộ không có thông tin video như keyframe, nên không thể tải và cắt kiểu video này theo cách không mất dữ liệu. Rất mong ai đó chứng minh rằng tôi sai
313chỉ là luồng video 4K, nhưng có lẽ cũng hoạt động với video có luồng âm thanhffmpeg -ss 5:40 -i $(yt-dlp -f 313 -g https://www.youtube.com/watch?v=3SykjY3GdMs) -acodec copy -vcodec copy -t 20 waterdrop_mountainlake.mkvGần đây tôi mới biết đến ứng dụng này và thấy thích
Giờ nghĩ lại thật khó tin là trước đây tôi cứ phải mở cả một instance Blender cùng dự án video chỉ để cắt clip, mà lại còn làm vậy thường xuyên