HandBrake 1.7.0, chương trình chuyển đổi video mã nguồn mở
(forum.handbrake.fr)Hướng dẫn nâng cấp HandBrake 1.7.0
- Trước khi cập nhật HandBrake, hãy bảo đảm không có tác vụ mã hóa nào đang chờ và nên sao lưu các preset tùy chỉnh cùng thiết lập ứng dụng.
- Người dùng Windows bắt buộc phải cài đặt Microsoft .NET Desktop Runtime phiên bản 6.0.x; ngay cả khi đã cài .NET 7, vẫn cần cài .NET 6.
Ghi chú phát hành HandBrake 1.7.0
- Có thể xem danh sách đầy đủ các cải tiến và bản sửa lỗi trong ghi chú phát hành trên GitHub.
Báo lỗi và gửi phản hồi
- Nếu phát hiện lỗi hoặc sự cố có thể tái hiện, hoặc muốn gửi phản hồi, vui lòng thông báo qua trình theo dõi issue trên GitHub.
- Cũng có thể liên hệ qua kênh hỗ trợ cộng đồng IRC.
- Ứng dụng HandBrake được phát triển bởi một nhóm tình nguyện viên nhỏ trong thời gian rảnh, nên có thể khó phản hồi ngay lập tức, nhưng mọi ý kiến đều được xem xét và phản hồi mang tính xây dựng luôn được hoan nghênh.
Lời cảm ơn và đóng góp
- Một số tính năng trong bản phát hành này được cung cấp bởi người dùng hoặc công ty sử dụng HandBrake, và phần dịch thuật được thực hiện nhờ sự tham gia tích cực của cộng đồng tình nguyện viên trên toàn thế giới.
- Những ai quan tâm đến việc đóng góp nhưng chưa tham gia được khuyến nghị đọc hướng dẫn đóng góp.
- Có nhiều cách khác nhau để đóng góp ngay cả khi không phải là nhà phát triển.
Ý kiến của GN⁺
- Việc nâng cấp lên HandBrake 1.7.0 yêu cầu sao lưu các thiết lập tùy chỉnh và cài đặt runtime .NET mới.
- Bản cập nhật này bao gồm các cải tiến và sửa lỗi, đồng thời là một dự án dựa trên cộng đồng với sự đóng góp từ người dùng và doanh nghiệp.
- Bài viết này thông báo về việc phát hành phiên bản mới của HandBrake, bộ chuyển mã video mã nguồn mở, và gây chú ý ở chỗ nhấn mạnh tầm quan trọng của hợp tác và đóng góp trong cộng đồng công nghệ.
1 bình luận
Ý kiến trên Hacker News
Nếu bạn thấy tiếc vì trong HandBrake không tự tính phần còn lại khi chỉ định kích thước tệp cuối cùng, thì phép tính này thực ra khá đơn giản
Bitrate trung bình
[kbps] = kích thước mục tiêu [kilobit] ÷ thời lượng [giây]Ví dụ, để làm cho một tệp dài 2 giờ 48 phút nhỏ hơn 5GB, 2 giờ 48 phút là 10.080 giây và 5GB là 40.000.000kb, nên bitrate trung bình sẽ là 40.000.000kb ÷ 10.080 giây = 3.968kbps
Nếu âm thanh là 256kbps, bitrate video trung bình phải không quá 3.712kbps
Thông thường người ta mã hóa theo chất lượng cố định, và kích thước đầu ra phụ thuộc rất nhiều vào video đầu vào
Vì vậy tôi đã tạo một wrapper Python để phân tích cú pháp đầu ra của HandBrakeCLI và ước tính kích thước cuối cùng dựa trên tỷ lệ hoàn thành cùng kích thước tệp đầu ra hiện tại
Nếu có vẻ tệp sẽ quá lớn, hoặc chất lượng đầu ra quá tệ đến mức cần tăng hệ số chất lượng, thì có thể dừng sớm
Thật vui khi thông điệp “Put that cocktail down. Your HandBrake encode is complete!” vẫn còn đó qua bao năm tháng
Trước đây, ngay cả sau khi pipeline của HandBrake chuyển sang 10-bit, khá nhiều bộ lọc vẫn còn ở 8-bit, nên nếu chọn nhầm bộ lọc thì rất dễ vô tình làm giảm chất lượng mã hóa
Giờ có vẻ hầu hết, thậm chí có thể là tất cả bộ lọc, đều hỗ trợ 10-bit
Ngoài ra, do giấy phép FDK-AAC nên không thể đóng gói kèm, khiến codec AAC trong bản phát hành bị yếu thế; nhưng gần đây tôi nghe nói codec đó không còn tệ như trước nữa
Tôi tò mò liệu phiên bản hiện tại của ứng dụng tuyệt vời này còn cạm bẫy lớn nào không
Dù sao thì vấn đề cốt lõi là thiếu nhân lực. Rất nhiều tính năng được yêu cầu mà sẽ rất hay nếu có vẫn đang kẹt ở thiên đường tính năng
Có lẽ dự án mã nguồn mở nào cũng tương tự
Dạo này tôi nhờ ChatGPT đưa lệnh terminal
ffmpegNhanh hơn bất kỳ ứng dụng nào rất nhiều và có thể chỉnh đúng ý mình
Khó có thể nói việc thử sai hoặc đọc trang man “nhanh hơn rất nhiều” so với chọn preset trong HandBrake rồi bấm checkbox hoặc kéo thanh trượt
ffprobevào promptNếu nguồn là DVD thì còn nhiều thứ phải xét như vấn đề tỷ lệ khung hình, khử xen kẽ, xử lý phụ đề, v.v.
Giờ tôi cứ muốn tìm một tùy chọn kiểu
--chatgptgiống--helpđể có thể duyệt bất kỳ trang hướng dẫn nàoDanh sách tính năng rất ổn. Đặc biệt đáng mong đợi là cải thiện hiệu năng cho kiến trúc arm64 / aarch64 / Apple Silicon, giải mã HEVC nhanh hơn nhờ FFmpeg mới nhất và bộ lọc bwdif nhanh hơn 30%, tối ưu hóa assembly mới cho SVT-AV1 giúp tăng hiệu năng tới 4 lần, cũng như loại bỏ việc sao chép khung hình không cần thiết để cải thiện hiệu quả bộ nhớ và tốc độ chuyển đổi video
Điểm phàn nàn duy nhất của tôi về HandBrakeCLI là không thể mã hóa đầu vào được pipe qua stdin
FFmpeg hỗ trợ việc này, và tôi cứ nghĩ HandBrake cũng dùng FFmpeg bên trong
libavformat,libavcodec,libavfilter, vốn là một phần của các thư viện FFmpegNhưng nó vẫn là một ứng dụng hoàn toàn khác. Decoder, một số demuxer và một số filter thì giống nhau, nhưng cách nối chúng lại hoàn toàn khác ứng dụng dòng lệnh FFmpeg
Hoặc có khi dùng chút “ma thuật” Bash như
handbrake-cli -i <(cat video-file.mp4)cũng đượcTôi chưa từng dùng HandBrakeCLI, chỉ dùng GUI nên cũng không rõ lắm
Tất nhiên ở những phần khác họ vẫn dùng rộng rãi các thư viện FFmpeg
Đây là một trong số ít trình chuyển mã không chỉ là wrapper của FFmpeg, nên vừa là ưu điểm vừa là nhược điểm
Có ai giải thích đơn giản được vì sao HandBrake nói không thể triển khai tùy chọn kích thước tệp mục tiêu không?
Trên các ứng dụng nén video Android, tính năng này hoạt động khá tốt, nhưng trong yêu cầu tính năng liên quan trên GitHub của HandBrake, một trong các maintainer nói rằng về thực tế thì rất khó
ffmpeg/vapoursynthkỳ lạ cũng làm đượcVì vậy tôi không hình dung nổi tại sao lại nói là không thể
Nếu dùng Windows thì tôi khuyên cứ dùng Staxrip: https://github.com/staxrip/staxrip
Cũng có một ứng dụng tương ứng trên Linux dựa trên vapoursynth, nhưng tôi không nhớ tên
Hoặc có thể là một trong các GUI của AV1an. Tất cả các công cụ kiểu này đều hỗ trợ kích thước tệp mục tiêu cùng với nhiều tính năng hơn HandBrake rất nhiều
Vì sao đến giờ vẫn chưa có một tính năng đơn giản kiểu “giới hạn video X ở kích thước tệp Y”?
Tôi chỉ muốn một tệp video 5GB thôi, nhưng HandBrake có vẻ lại quan tâm đến một trong 50 preset Vimeo mà tôi còn chẳng hiểu rõ
5GB rõ ràng lớn hơn CD, còn nếu không phải để nhét đúng 10 cái vào Blu-ray thì lại quá nhỏ cho Blu-ray
Cũng như preset Vimeo trông kỳ lạ với bạn, trường hợp sử dụng của bạn trông kỳ lạ với phần còn lại của thế giới
Ngoại trừ khi xử lý video HDR, tôi luôn thích ffmpeg hơn HandBrake
Tôi chưa tìm được lệnh ffmpeg phù hợp để sao chép siêu dữ liệu HDR từ nguồn đầu vào sang đầu ra
Lần cuối tôi kiểm tra thì việc này là không thể, và phải trích xuất thủ công siêu dữ liệu bằng công cụ như MediaInfo rồi truyền từng giá trị làm tham số cho ffmpeg
Có ai biết hiện giờ vẫn vậy không?
-movflagsvàuse_metadata_tagschưa?ffmpeg -i $input_file -movflags use_metadata_tags -crf 22 $output_fileNguồn: https://video.stackexchange.com/a/26076
Nói chi tiết hơn một chút, có hai chuẩn video HDR phổ biến là Dolby Vision và HDR10. Cả hai đều cần hỗ trợ riêng bên trong encoder, và vấn đề này gần với
libx265hơn làlibavformat/ffmpegMay mắn là nếu video nguồn là HDR10, bạn có thể trích xuất hàm truyền và tone mapping không thay đổi trên toàn cục rồi áp dụng trực tiếp vào siêu dữ liệu đầu ra. FFmpeg có thể truyền các giá trị này cho encoder, nhưng mặc định không sao chép chúng từ nguồn sang đích
Bài viết giải thích cách làm có tại https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-f...
Tôi từng mã hóa lại video được mã hóa bằng HDR10 sang định dạng khác trong khi vẫn giữ siêu dữ liệu, và lệnh cuối cùng còn trong lịch sử shell đại khái là
ffmpeg -i Movie-with-HDR.mkv -c:v libx265 -map_metadata:s:0 0:s:0 -map_metadata:g:0 0 -x265-params crf=21:master-display="G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50)":max-cll=1000,240 Movie-output.mkvỞ đây, các thiết lập
master-displayvàmax-clllà hàm truyền màu mà tôi phải trích xuất từ video đầu tiên bằng công cụ khác. Các thiết lập này được mô tả trong tài liệu tham số củalibx265tại https://x265.readthedocs.io/en/master/cli.htmlDolby Vision thì khó hơn. Vì siêu dữ liệu là động nên tôi không chắc có thể lấy từ nguồn bằng cách nào, nhưng có thể cung cấp cho
libx265thông qua tham số dòng lệnh. Tiếc là nó chỉ được expose qua dòng lệnh, không có trong API, nên hiện ffmpeg vẫn chưa thể xử lý thayTài liệu tham khảo liên quan về quy trình trích xuất hàm truyền rồi truyền cho ffmpeg có tại https://medium.com/@yllanos/how-to-encode-a-4k-hdr-movie-usi... và https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-f..., còn bài viết tổng hợp việc nhiều người làm cùng thao tác này ở https://www.reddit.com/r/ffmpeg/comments/g3uucr/how_do_i_enc...
Về chuyển đổi từ Dolby Vision sang HDR10, cũng như nội dung liên quan đến HLG và PQ, hãy xem https://www.reddit.com/r/ffmpeg/comments/nkxbay/how_to_conve..., còn các điểm tinh tế của Dolby Vision có ở https://www.reddit.com/r/ffmpeg/comments/a32yv4/deleted_by_u...
Có lẽ bản phát hành mới là liên kết tốt hơn
Nó có nhật ký thay đổi mà hầu hết mọi người sẽ muốn xem
https://github.com/HandBrake/HandBrake/releases/tag/1.7.0