Cách cắt tỉa, chia và ghép video mà không cần mã hóa lại
Cập nhật
Cắt bớt vài giây khỏi một video nghe có vẻ phải diễn ra tức thì và không mất dữ liệu, và đôi khi đúng là vậy. Những lần khác, công cụ giải mã và nén lại toàn bộ clip, việc này mất nhiều thời gian hơn và làm giảm một chút chất lượng. Sự khác biệt nằm ở hai kỹ thuật, sao chép luồng và mã hóa lại, và ở cách video nén được xây dựng từ các khung hình chính.
Hướng dẫn này giải thích cả hai, cho thấy khi nào có thể cắt không mất dữ liệu, và nói rõ công cụ nào của chúng tôi sao chép luồng và công cụ nào mã hóa lại.
Sao chép luồng và mã hóa lại
Sao chép luồng (còn gọi là remux, hay passthrough) lấy các gói video và âm thanh đã được nén và ghi chúng vào một tệp mới mà không giải mã. Cách này rất nhanh, vì không có quá trình nén nào diễn ra, và không mất dữ liệu, vì các gói giống hệt từng bit so với bản gốc. Hạn chế của nó là bạn chỉ có thể giữ hoặc bỏ nguyên các gói; bạn không thể thay đổi codec, độ phân giải, bitrate hay hướng của các điểm ảnh.
Mã hóa lại giải mã video thành từng khung hình riêng lẻ và nén chúng lại. Cách này chậm hơn, và với codec có mất dữ liệu, mỗi lần mã hóa lại lại loại bỏ thêm một chút chi tiết, nhưng nó có thể bắt đầu và kết thúc ở bất kỳ khung hình nào và có thể thay đổi bất cứ điều gì về video.
Vì sao các lần cắt không mất dữ liệu bị bắt vào khung hình chính
Các codec hiện đại không lưu mọi khung hình dưới dạng một bức ảnh hoàn chỉnh. Khung hình chính (keyframe, I-frame) là một hình ảnh đầy đủ; các khung hình sau nó phần lớn chỉ lưu những gì đã thay đổi, tham chiếu ngược về các khung hình trước đó. Một nhóm khung hình bắt đầu bằng một khung hình chính được gọi là GOP, và trong cảnh quay từ điện thoại và máy quay, khung hình chính thường xuất hiện mỗi một đến vài giây.
Một khung hình ở giữa GOP không thể hiển thị nếu thiếu các khung hình mà nó phụ thuộc vào. Vì vậy, một lần cắt bằng sao chép luồng chỉ có thể bắt đầu gọn gàng tại một khung hình chính. Các công cụ cắt không mất dữ liệu hoặc dời điểm bắt đầu của bạn đến khung hình chính gần nhất, đó là lý do điểm cắt có thể lệch một hai giây so với chỗ bạn yêu cầu, hoặc đưa vào các khung hình trước đó rồi ẩn chúng đi, điều mà một số trình phát bỏ qua. Kết thúc một clip thì dễ hơn, vì bạn có thể dừng sau bất kỳ khung hình nào.
Một số trình chỉnh sửa dùng kết xuất thông minh (smart rendering): chúng chỉ mã hóa lại vài khung hình giữa điểm cắt của bạn và khung hình chính tiếp theo rồi sao chép luồng phần còn lại. Cách đó cho độ chính xác đến từng khung hình mà hầu như không giảm chất lượng, nhưng đòi hỏi phải khớp cẩn thận các thiết lập của bộ mã hóa với bản gốc.
Ghép mà không mã hóa lại
Nối các tệp bằng sao chép luồng chỉ hoạt động khi mọi clip có cùng codec, độ phân giải, tốc độ khung hình, định dạng điểm ảnh và định dạng âm thanh, chẳng hạn nhiều clip được quay liên tiếp trên cùng một máy quay. Nếu có bất cứ điều gì khác biệt, chẳng hạn một clip điện thoại được nối với một bản ghi màn hình, các phần phải được mã hóa lại sang một định dạng chung, và công cụ phải quyết định cách xử lý các kích thước khác nhau, thường bằng cách thêm dải đen.
Các công cụ của chúng tôi làm gì
Tất cả các công cụ này đều chạy trong trình duyệt của bạn, nên tệp không bị tải lên. Dưới đây là cách mỗi công cụ xử lý việc mã hóa lại trên bộ máy xử lý chính của nó, vốn dùng khả năng hỗ trợ WebCodecs tích hợp trong trình duyệt của bạn. Khi trình duyệt không xử lý được một tệp cụ thể theo cách đó, các công cụ sẽ chuyển sang một bản ffmpeg chạy trên WebAssembly, và bản này sẽ mã hóa lại video.
- Cắt tỉa video, chế độ Cắt tỉa: khi phần bạn giữ bắt đầu ngay từ đầu video và định dạng đầu ra hỗ trợ các codec của nguồn, video và âm thanh được sao chép luồng. Khi phần được giữ bắt đầu muộn hơn, video được mã hóa lại, giúp điểm cắt chính xác đến từng khung hình thay vì bị bắt vào khung hình chính; âm thanh cũng được mã hóa lại.
- Cắt tỉa video, chế độ Cắt bỏ (loại bỏ một đoạn ở giữa): cả hai phần còn lại được mã hóa lại với cùng thiết lập rồi được nối lại mà không mã hóa lại thêm lần nào nữa. Nếu đoạn bị loại bỏ chạm đến điểm đầu hoặc điểm cuối, nó hoạt động giống như cắt tỉa.
- Trình chia video: mỗi phần được tạo ra như một lần cắt tỉa riêng, nên phần đầu tiên có thể được sao chép luồng còn mọi phần sau đều được mã hóa lại. Bạn có thể chia theo số phần, theo thời lượng hoặc tại các điểm tùy chỉnh, với đầu ra MP4, MOV, MKV hoặc WebM.
- Ghép: Trình ghép video mở Trình chỉnh sửa video, nơi bạn sắp xếp các clip trên dòng thời gian. Việc xuất luôn kết xuất một video mới ở độ phân giải, tốc độ khung hình và bitrate bạn chọn, nên có thể kết hợp các clip có kích thước hoặc codec khác nhau.
- Trình xoay video: trong trình xoay cổ điển, việc xoay một tệp MP4 hoặc MOV có codec được định dạng chứa đó hỗ trợ được thực hiện mà không mã hóa lại, bằng cách đặt cờ xoay mà trình phát đọc. Thao tác lật, xoay với đầu ra MKV hoặc WebM, và mọi thao tác xoay do trợ lý AI thực hiện đều mã hóa lại các điểm ảnh.
Giữ chất lượng khi không thể tránh mã hóa lại
Một lần mã hóa lại duy nhất ở bitrate hợp lý rất khó nhận ra. Vấn đề chất lượng đến từ việc lặp lại quá trình, hoặc từ việc ép bitrate quá thấp.
- Cắt từ tệp gốc, không phải từ bản xuất của một bản xuất.
- Thực hiện mọi thao tác cắt tỉa trong một lượt khi có thể, thay vì cắt tỉa, rồi chia, rồi lại cắt tỉa.
- Giữ độ phân giải đầu ra giống nguồn trừ khi bạn cũng muốn tệp nhỏ hơn.
- Chọn cùng định dạng chứa với nguồn khi bạn không cần định dạng khác; điều đó cho công cụ cơ hội tốt nhất để sao chép luồng khi có thể.
Khi bạn cần một lần cắt theo khung hình chính hoàn toàn không mất dữ liệu
Nếu bạn có một bản ghi rất dài và muốn cắt bỏ phần đầu mà không đụng đến phần còn lại, một công cụ trên máy tính hoạt động thuần túy bằng sao chép luồng là lựa chọn phù hợp. Ứng dụng mã nguồn mở LosslessCut được xây dựng cho việc này, và dòng lệnh ffmpeg có thể làm điều đó với tùy chọn copy, ví dụ: ffmpeg -ss 00:01:00 -i input.mp4 -t 30 -c copy output.mp4. Hãy dự tính điểm bắt đầu sẽ bị bắt vào khung hình chính gần nhất trước thời điểm bạn đưa ra.
Với các clip thường ngày, nơi độ chính xác đến từng khung hình quan trọng hơn việc tránh một lần mã hóa lại, công cụ Cắt tỉa video dùng nhanh hơn và không cần cài đặt. Để giảm dung lượng cùng lúc, hãy hoàn tất bằng Trình nén video.
Công cụ dùng trong hướng dẫn này
Câu hỏi thường gặp
01
02
03