Độ 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 có tính đến kênh alpha khi phát 'màn hình xanh' video được mã hoá thành WebM (VP8 và VP9) với 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 trang web, hình ảnh hoặc thậm chí là các video khác.
Có bản minh hoạ tại simpl.info/videoalpha cho URL của bạn. Khá kỳ quái và hơi thô lỗ xung quanh (theo nghĩa đen) nhưng bạn hiểu rồi đó!
Cách tạo video alpha
Phương thức mà chúng tôi mô tả sử dụng các công cụ nguồn mở Binder và ffmpeg:
- Quay chủ thể của bạn trước một nền đơn sắc, chẳng hạn như nền sáng bức màn màu xanh lục.
- Xử lý video để tạo một mảng hình ảnh tĩnh PNG trong suốt .
- Mã hóa sang định dạng video (trong trường hợp này là WebM).
Có cũng như các công cụ thuộc quyền sở hữu riêng để làm công việc tương tự, chẳng hạn như Adobe After Effects. Bạn có thể tìm thấy đơn giản hơn.
1. Tạo video có màn hình xanh lục
Trước tiên, bạn cần quay chủ thể của mình sao cho mọi thứ trong nền có thể được 'xóa' (được làm minh bạch) bằng cách xử lý tiếp theo.
Cách dễ nhất để thực hiện việc này là quay trước một nền màu duy nhất, chẳng hạn như màn hoặc rèm. 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ề màu da.
Có một số hướng dẫn trực tuyến để quay video màn hình xanh lục (còn gọi là chroma key) và rất nhiều địa điểm để mua màu xanh lá và phông nền màn hình xanh dương. Ngoài ra, bạn có thể vẽ nền bằng Sơn màu chủ đạo.
Đoạn video tuyệt vời về Gatsby VFX cho thấy bạn có thể hoàn thành được bao nhiêu việc với màn hình xanh lục.
Một số mẹo khi quay phim:
- Đảm bảo rằng chủ thể không có quần áo hoặc đồ vật cùng màu làm phông nền, nếu không chúng sẽ hiển thị dưới dạng 'lỗ' trong video cuối cùng. Ngay cả cá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 nhất quán, đồng đều và tránh bóng đổ: mục đích là để dải màu nhỏ nhất có thể trong nền mà sau đó sẽ cần phải được thể hiện rõ ràng.
- Sử dụng nhiều ánh sáng khuếch tán giúp tránh bóng và màu nền biến thể.
- Tránh 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 trên màn hình xanh lục
Các bước sau đây mô tả một cách để tạo video alpha thô từ video màn hình xanh lục:
- Sau khi quay một video có màn hình xanh lục, bạn có thể sử dụng công cụ nguồn mở như Binder để chuyển đổi video vào một mảng tệp PNG có dữ liệu alpha. Sử dụng chế độ ký tự màu của máy xay để hãy xoá màn hình xanh lục và làm cho màn hình trong suốt. (Lưu ý rằng PNG không phải là bắt buộc: mọi định dạng giúp lưu giữ dữ liệu kênh alpha đều được).
Chuyển đổi mảng tệp PNG thành video YUVA thô bằng công cụ nguồn mở chẳng hạn như ffmpeg:
ffmpeg -i image%04d.png -pix_fmt yuva420p video.raw
Ngoài ra, hãy mã hoá các tệp trực tiếp thành WebM, sử dụ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ã hóa video alpha thành WebM
Video alpha thô có thể được mã hoá 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á các video alpha WebM.
Sử dụng ffmpeg với video đầu vào bao gồm cả 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 theo đúng định dạng theo thông số kỹ thuật. (Lưu ý: hiện tại bạn cần đảm bảo tải phiên bản ffmpeg mới nhất từ cây git để tính năng này hoạt động.)
Lệnh mẫu:
ffmpeg -i myAlphaVideo.webm output.webm
Sử dụng công cụ webm:
git clone https://chromium.googlesource.com/webm/libvpx
webm-tools là một tập hợp các công cụ nguồn mở đơn giản có liên quan đến WebM, được duy trì bởi các tác giả của Dự án WebM, bao gồm một công cụ để tạo video WebM với độ 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, chỉ cần đặt tệp này 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ư Google Vignesh Venkatasubramanian về công trình của anh ấy dự án. Anh tóm tắt những thách thức chính có 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 phá vỡ luồng bit của VP8 và không phá vỡ sự hiện có người chơi.
- 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 phải thay đổi đường dẫn kết xuất để hỗ trợ kết xuất video alpha.
Chúng ta có thể nghĩ ra nhiều trường hợp sử dụng thú vị liên quan đến độ trong suốt của video alpha: trò chơi, video tương tác, kể chuyện mang tính cộng tác (thêm video của riêng bạn vào video/hình ảnh nền), video có cá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 thành công! Hãy cho chúng tôi biết nếu bạn tạo ra điều gì đó tuyệt vời nhờ phiên bản alpha trong suốt.