Độ trong suốt alpha trong video trên Chrome
Chrome 31 hiện hỗ trợ độ trong suốt alpha của video trong WebM.
Nói cách khác, Chrome sẽ tính đến kênh alpha khi phát video "màn hình xanh lục" được mã hoá thành WebM (VP8 và VP9) bằng kênh alpha. Điều này có nghĩa là bạn có thể phát video có nền trong suốt: trên các trang web, hình ảnh hoặc thậm chí là các video khác.
Bạn có thể xem bản minh hoạ tại simpl.info/videoalpha. Có vẻ hơi siêu thực và hơi thô ráp (theo nghĩa đen), nhưng bạn đã hiểu ý tưởng!
Cách tạo video alpha
Phương pháp chúng tôi mô tả sử dụng các công cụ nguồn mở Blender và ffmpeg:
- Quay chủ thể trước một phông nền có một màu duy nhất, chẳng hạn như một tấm màn màu xanh lục sáng.
- Xử lý video để tạo một mảng hình ảnh tĩnh PNG có dữ liệu độ trong suốt.
- Mã hoá thành định dạng video (trong trường hợp này là WebM).
Ngoài ra, bạn cũng có thể sử dụng các công cụ độc quyền để thực hiện cùng một công việc, chẳng hạn như Adobe After Effects. Bạn có thể thấy công cụ này đơn giản hơn.
1. Tạo video có phông xanh lục
Trước tiên, bạn cần quay chủ thể theo cách mà mọi thứ trong nền có thể được "xoá" (được làm trong suốt) bằng cách xử lý tiếp theo.
Cách dễ nhất để làm việc này là quay trước phông nền một màu, chẳng hạn như màn hình hoặc rèm cửa. Màu xanh lục hoặc xanh dương là những màu được sử dụng thường xuyên nhất, chủ yếu là do sự khác biệt với màu da.
Có một số hướng dẫn trên mạng về cách quay video phông xanh (còn gọi là chroma key) và nhiều nơi bán phông nền xanh lục và xanh dương. Ngoài ra, bạn có thể vẽ nền bằng công cụ vẽ khoá màu.
Đoạn phim hiệu ứng hình ảnh của The Great Gatsby cho thấy những gì bạn có thể làm được với phông nền xanh lục.
Một số mẹo quay phim:
- Đảm bảo chủ thể không mặc quần áo hoặc có vật thể có cùng màu với phông nền, nếu không, những chi tiết này sẽ xuất hiện dưới dạng "lỗ" trong video hoàn thiện. Ngay cả biểu trưng hoặc đồ trang sức nhỏ cũng có thể gây ra vấn đề.
- Sử dụng ánh sáng đồng nhất, đều và tránh bóng: mục đích là để có phạm vi màu nhỏ nhất có thể trong nền sau đó cần được làm trong suốt.
- Việc sử dụng nhiều đèn khuếch tán giúp tránh các biến thể bóng và màu nền.
- Tránh dùng phông nền sáng bóng: bề mặt mờ sẽ khuếch tán ánh sáng tốt hơn.
2. Tạo video alpha thô từ video màn xanh lục
Các bước sau đây mô tả một cách để tạo video alpha thô từ video phông xanh lục:
- Sau khi quay video phông xanh, bạn có thể sử dụng một công cụ nguồn mở như Blender để chuyển đổi video thành một mảng tệp PNG có dữ liệu alpha. Sử dụng tính năng lấy màu của Blender để loại bỏ phông xanh và làm cho phông xanh trở nên trong suốt. (Xin lưu ý rằng PNG không bắt buộc: mọi định dạng giữ nguyên dữ liệu kênh alpha đều được.)
Chuyển đổi mảng tệp PNG thành video YUVA thô bằng một công cụ nguồn mở như ffmpeg:
ffmpeg -i image%04d.png -pix_fmt yuva420p video.raw
Ngoài ra, bạn có thể mã hoá trực tiếp các tệp thành WebM bằng lệnh ffmpeg như sau:
ffmpeg -i image%04d.png output.webm
Nếu muốn thêm âm thanh, bạn có thể sử dụng ffmpeg để kết hợp âm thanh đó bằng một lệnh như sau:
ffmpeg -i image%04d.png -i audio.wav output.webm
3. Mã hoá video alpha thành WebM
Bạn có thể mã hoá video alpha thô thành WebM theo hai cách.
Với ffmpeg: chúng tôi đã thêm tính năng hỗ trợ cho ffmpeg để mã hoá video WebM alpha.
Sử dụng ffmpeg với video đầu vào bao gồm dữ liệu alpha, đặt định dạng đầu ra thành WebM và quá trình mã hoá sẽ tự động được thực hiện ở định dạng chính xác theo thông số kỹ thuật. (Lưu ý: bạn hiện cần đảm bảo tải phiên bản ffmpeg mới nhất từ cây git để quá trình này hoạt động.)
Lệnh mẫu:
ffmpeg -i myAlphaVideo.webm output.webm
Sử dụng webm-tools:
git clone https://chromium.googlesource.com/webm/libvpx
webm-tools là một bộ công cụ nguồn mở đơn giản liên quan đến WebM, do các tác giả Dự án WebM duy trì, bao gồm cả một công cụ để tạo video WebM có độ trong suốt alpha.
Chạy tệp nhị phân bằng
--help
để xem danh sách các tuỳ chọn mà alpha_encoder hỗ trợ.
4. Phát trong Chrome
Để phát tệp WebM đã mã hoá trong Chrome, bạn chỉ cần đặt tệp đó làm nguồn của phần tử video.
Họ đã làm như thế nào?
Chúng tôi đã trò chuyện với kỹ sư Vignesh Venkatasubramanian của Google về công việc của anh trong dự án này. Ông tóm tắt các thách thức chính liên quan:
- Luồng bit VP8 không hỗ trợ kênh alpha. Vì vậy, chúng tôi phải kết hợp alpha mà không làm hỏng luồng bit VP8 và không làm hỏng trình phát hiện có.
- Trình kết xuất của Chrome không thể kết xuất video có alpha.
- Chrome có nhiều đường dẫn kết xuất cho nhiều thiết bị phần cứng/GPU. Mọi đường dẫn kết xuất đều phải được thay đổi để hỗ trợ kết xuất video alpha.
Chúng ta có thể nghĩ đến nhiều trường hợp sử dụng thú vị cho độ trong suốt alpha của video: trò chơi, video tương tác, kể chuyện cộng tác (thêm video của riêng bạn vào video/hình nền), video có nhân vật hoặc cốt truyện thay thế, ứng dụng web sử dụng thành phần video lớp phủ.
Chúc bạn làm phim vui vẻ! Hãy cho chúng tôi biết nếu bạn tạo ra một sản phẩm tuyệt vời bằng độ trong suốt alpha.