1 điểm bởi GN⁺ 2024-02-09 | 1 bình luận | Chia sẻ qua WhatsApp

Tình cờ đóng góp cho Blender VSE

  • Hai tháng trước, tôi bắt đầu đóng góp một chút mã cho Video Sequence Editor (VSE) của Blender.
  • Bạn có biết Blender có công cụ chỉnh sửa video không? Tôi cũng không biết.
  • Dù hoàn toàn không biết gì về chỉnh sửa video, timeline, sequencer, chỉnh màu, ffmpeg, trộn âm thanh, v.v., tôi vẫn bắt đầu làm việc với VSE.

Tôi đã bắt đầu làm việc với VSE một cách "tình cờ" như thế nào?

  • Tôi quyết định ghé hội nghị Unite 2023 của Unity ở Amsterdam và thăm bạn bè.
  • Sau hội nghị, tôi ghé trụ sở Blender trong nửa ngày, và Francesco cùng Sergey hỏi liệu tôi có muốn đóng góp cho VSE hay không.
  • Và thế là tôi bắt đầu làm việc với VSE.

Cải thiện việc vẽ timeline

  • Timeline của VSE nằm ở phía dưới hình ảnh, và có thể thấy khoảng 3000 "strip" cùng lúc.
  • Việc cuộn và di chuyển timeline khiến giao diện người dùng chỉ cập nhật ở khoảng 15 khung hình.
  • Giờ đây nó cập nhật ở hơn 60 khung hình (#115311).

Scope

  • VSE có thể hiển thị các "scope" điển hình như histogram hình ảnh, waveform và vectorscope.
  • Đã có các cải tiến cho histogram, waveform và vectorscope.

Phần ffmpeg

  • Blender chủ yếu dùng thư viện ffmpeg để đọc và ghi audio/video.
  • libswscale được dùng để thực hiện chuyển đổi RGB↔YUV cho các khung hình phim.
  • Giờ đây bước chuyển đổi RGB→YUV được xử lý nhanh hơn nhờ tận dụng đa luồng (#116008).

Resampling âm thanh

  • Trong thư viện âm thanh (Audaspace), việc resampling dữ liệu clip âm thanh tốn khá nhiều thời gian.
  • Một thiết lập chất lượng resampling "trung bình" mới đã được thêm vào Audaspace để dùng khi render (#116059).

Biến đổi và lọc hình ảnh

  • Trong VSE có thể biến đổi hình ảnh, phim, văn bản, cảnh, v.v.: định vị, xoay, thay đổi kích thước, áp dụng crop bổ sung.
  • Các phép biến đổi này đều được thực hiện trên CPU và đã được xử lý bằng đa luồng.
Sửa "lỗi nửa pixel"
  • Có nhiều "lỗi nửa pixel" trong mã, và trong nhiều trường hợp chúng tự triệt tiêu lẫn nhau hoặc không nhìn thấy được.
  • Các lỗi này đã được sửa (#116628).
Viền trong suốt xung quanh bilinear filtering
  • Chỉ bilinear filtering mới thêm độ trong suốt quanh hình ảnh kết quả.
  • Giờ đây phần "blend với độ trong suốt" đã được loại bỏ khỏi mã bilinear filtering (#117717).
Thêm và thay đổi bộ lọc
  • Trước đây phép biến đổi strip của VSE không có tùy chọn cubic filtering.
  • Giờ đây trong VSE có thể chọn hai loại cubic filtering (#117100, #117517).
  • Tùy chọn bộ lọc "Auto" đã được thêm vào và đặt làm mặc định (#117853).

Tối ưu hóa hiệu ứng VSE

  • Trong các bộ dữ liệu phim thực tế, nhiều hiệu ứng không được dùng, nhưng tôi vẫn tìm thấy vài điểm trong mã để tối ưu hóa.
  • Phần lớn được tối ưu hóa thông qua đa luồng.

Tất cả những điều này có ý nghĩa gì với thời gian render?

  • Trên ba bộ dữ liệu do Blender Studio cung cấp, thời gian render cuối cùng của phim VSE trên PC đã nhanh hơn khoảng 2 lần.

Suy nghĩ về quá trình làm việc thực tế

  • Tôi không chắc toàn bộ số việc trên có phải là một "khối lượng công việc tốt" cho hai tháng làm bán thời gian hay không.
  • Nhưng có vẻ cũng khá ổn, dù nhà phát triển (tôi) hoàn toàn không biết gì về lĩnh vực này hay codebase này.
  • Tổng cộng 37 pull request đã được hoàn thành, review và merge.

Tiếp theo là gì?

  • Blender 4.1 đã vào giai đoạn beta và về mặt tính năng thì đã "hoàn chỉnh".
  • Công việc cho Blender 4.2 bắt đầu, và tôi dự định sẽ tiếp tục làm việc với VSE.

GN⁺ Ý kiến:

  1. Bài viết này chia sẻ các cải tiến và quá trình phát triển của VSE trong Blender, cho thấy việc đóng góp cho các dự án mã nguồn mở quan trọng như thế nào.
  2. Bằng cách nhấn mạnh rằng một nhà phát triển vẫn có thể đóng góp có ý nghĩa ngay cả trong lĩnh vực không phải chuyên môn của mình, bài viết truyền tải một thông điệp tích cực khuyến khích những thử thách mới.
  3. Bài viết cũng nhấn mạnh tầm quan trọng của tối ưu hóa và cải thiện hiệu năng trong phát triển phần mềm, đồng thời đưa ra các ví dụ cụ thể về việc những cải tiến này ảnh hưởng thế nào đến trải nghiệm người dùng thực tế và thời gian render.

1 bình luận

 
GN⁺ 2024-02-09
Ý kiến trên Hacker News
  • Một người dùng cho biết phần sai lầm lớn nhất trong sự nghiệp của mình là không tìm được sự cân bằng giữa việc đi tìm lời giải mang tính toán học cho những dự án độc đáo và các dự án trả phí cho ra kết quả ở mức trung bình. Người này cũng chia sẻ trải nghiệm từng có cơ hội được trả tiền cho công việc mình vốn làm không công, nhưng cuối cùng lại không làm gì cả.
  • Một người dùng khác nhắc đến trường hợp ban đầu tích lũy nhiều kinh nghiệm với Unity rồi sau đó đóng góp cho Blender, đặc biệt khen ngợi thay đổi đã tối ưu hóa giai đoạn xử lý hình ảnh để tăng tốc độ tính toán lên gấp 4 lần.
  • Một người dùng cho biết xu hướng yêu thích nhất của mình trong vài năm qua là Aras tham gia nhiều dự án đồ họa mã nguồn mở, tạo ra các cải tiến và mức tăng tốc lớn rồi chuyển sang dự án khác.
  • Một người dùng khác bày tỏ sự tiếc nuối vì Musicbee, trình phát nhạc mà họ ưa thích, không phải mã nguồn mở; họ nói rằng nếu mã nguồn được công khai thì muốn đóng góp sửa các vấn đề nhỏ vào thời gian rảnh.
  • Một người dùng cho biết từ năm 2020 họ đã dùng Blender VSE để biên tập video và cho rằng đây là trình biên tập video ổn định nhất, nhiều tính năng nhất trên Linux.
  • Một người dùng khác chia sẻ rằng họ muốn dùng toàn bộ công cụ mã nguồn mở cho podcast của mình, nhưng vì mất 10 tiếng để render một chuỗi mp4 có chroma key trong Blender nên đã chuyển sang DaVinci Resolve.
  • Một người dùng nhờ giải thích ý nghĩa tiêu đề bài viết và hỏi liệu đây có phải là một cách diễn đạt mang tính meme hay không.
  • Một người dùng khác nhận xét rằng việc làm cho bất kỳ phần nào của chương trình 3D Blender nhanh hơn nữa có lẽ sẽ rất khó, vì đây đã là ứng dụng 3D khởi động nhanh nhất và phản hồi nhanh nhất rồi.
  • Một người dùng đề nghị đổi tiêu đề cho rõ ràng hơn.
  • Cuối cùng, một người dùng cho biết trải nghiệm lần đầu dùng VSE của họ không mấy tốt đẹp và chia sẻ một liên kết về trải nghiệm đó.