3 điểm bởi GN⁺ 2023-11-21 | 1 bình luận | Chia sẻ qua WhatsApp

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

 
GN⁺ 2023-11-21
Ý 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

    • Phép tính này chỉ đúng khi mã hóa với bitrate cố định
      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

    • Tôi thích những chi tiết như vậy. Cảm giác như nó đưa lại một chút linh hồn hay bóng ma gì đó vào cỗ máy
  • 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

    • Từ 1.6, mọi bộ lọc đều hỗ trợ độ sâu bit cao. Chất lượng bộ mã hóa AAC giờ cũng khá ổn, và trên macOS có thể dùng bộ mã hóa AAC của Apple nên không thành vấn đề
      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 ffmpeg
    Nhanh hơn bất kỳ ứng dụng nào rất nhiều và có thể chỉnh đúng ý mình

    • Chỉ cần nhấp vào tệp, chọn “open with handbrake” rồi bấm “convert” là xong. Tôi không tưởng tượng nổi có gì nhanh hơn thế
    • “Có thể chỉnh đúng ý mình” nghĩa là thực sự hiểu các tùy chọn ffmpeg và cách chúng tương tác với nhau
      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
    • Nhưng ChatGPT không biết định dạng tệp. Trừ khi bạn đưa cả đầu ra ffprobe vào prompt
      Nế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.
    • ffmpeg đúng là chương trình duy nhất mà tôi muốn có no-code trực quan
      Giờ tôi cứ muốn tìm một tùy chọn kiểu --chatgpt giống --help để có thể duyệt bất kỳ trang hướng dẫn nào
    • Nhanh hơn, nhưng cũng dễ lỗi hơn. Ứng dụng cũng có thể chỉnh theo ý muốn, nên phần đó coi như hòa
  • Danh 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

    • HandBrake dùng libavformat, libavcodec, libavfilter, vốn là một phần của các thư viện FFmpeg
      Như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
    • Named pipe thì không được sao?
      Hoặc có khi dùng chút “ma thuật” Bash như handbrake-cli -i <(cat video-file.mp4) cũng được
      Tôi chưa từng dùng HandBrakeCLI, chỉ dùng GUI nên cũng không rõ lắm
    • Khi mới biết về HandBrake tôi khá ngạc nhiên: thay vì chỉ dùng FFmpeg, họ tự làm rất nhiều thành phần
      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ó

    • Đây đúng nghĩa là tính năng mà mọi encoder nền tảng đều cung cấp. Ngay cả với chuỗi filter ffmpeg/vapoursynth kỳ lạ cũng làm được
      Vì 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õ

    • Không hiểu vì sao bạn lại muốn đúng giới hạn 5GB. Bạn có cả ngăn kéo đầy USB 5GB cần lấp đầy à?
      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?

    • Bạn đã thử dùng -movflagsuse_metadata_tags chưa?
      ffmpeg -i $input_file -movflags use_metadata_tags -crf 22 $output_file
      Nguồn: https://video.stackexchange.com/a/26076
    • Đúng vậy, có vẻ vẫn phải tự trích xuất siêu dữ liệu rồi nhập thủ công
      Nói chi tiết hơn một chút, có hai chuẩn video HDR phổ biến là Dolby VisionHDR10. Cả hai đều cần hỗ trợ riêng bên trong encoder, và vấn đề này gần với libx265 hơn là libavformat/ffmpeg
      May 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-displaymax-cll là 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ủa libx265 tại https://x265.readthedocs.io/en/master/cli.html
      Dolby 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 libx265 thô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ý thay
      Tà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...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