Search…

Tìm Hiểu Về WebM

27/08/20206 min read
WebM là một loại định dạng video file mã nguồn mở, royalty-free, được thiết kế cho nền web, thay thế cho các định dạng video file tốn phí trước đây. Ngoài ra, bài viết cũng sẽ giới thiệu chương trình FFmpeg, chương trình hỗ trợ convert các định dạng video khác về WebM.

Công nghệ WebM

Giới thiệu chung

WebM là một định dạng file được thiết kế để phục vụ cho nền web. Một tập tin WebM bao gồm video stream sử dụng VP8/VP9 codec, audio stream sử dụng Vorbis hoặc Opus codec, và WebVTT để làm phụ đề. Cấu trúc tập tin WebM xây dựng dựa trên định dạng Matroska media container.

VP8 và VP9 là gì?

VP8 và VP9 là các công nghệ nén video mã nguồn mở, được phát triển bởi Google. Không như các công nghệ nén khác, VP8 và VP9 đều royalty-free, nghĩa là bạn không cần trả tiền bản quyền cho tác giả nếu sử dụng công nghệ đó.

Vorbis và Opus là gì?

Vorbis và Opus là các công nghệ nén audio mã nguồn mở, được phát triển bởi Xiph Foundation. Cũng như VP8/VP9, các công nghệ này hoàn toàn miễn phí.

Ưu điểm sử dụng WebM

  • VP8/VP9 sử dụng CPU với hiệu suất cao, khi convert định dạng sang WebM kích thước file sẽ được giảm đáng kể nhưng vẫn đem lại các thước phim chất lượng tốt.
  • Thay thế cho định dạng GIF.
  • Quá trình chuyển đổi từ các định dạng video khác sang WebM rất dễ dàng, nhanh chóng bằng công cụ FFmpeg.
  • Bản quyền BSD.

Phần mềm FFmpeg

Giới thiệu chung

FFmpeg là phần mềm cung cấp các thư viện xử lý dữ liệu đa phương tiện mã nguồn mở. FFmpeg có khả năng encode/decode nhiều loại định dạng video, audio khác nhau. Ngoài ra, FFmpeg còn hỗ trợ các tính năng chụp và quay màn hình, xử lý đồ hoạ cho video như cut, drop, frame capturing,…

Cài đặt FFmpeg

FFmpeg được phát triển trên hệ điều hành GNU/Linux. Tuy nhiên, FFmpeg vẫn có thể được compiled để sử dụng trên các HĐH thông dụng khác như Mac OS X, Microsoft Windows.
Tải về FFmpeg: ffmpeg.org/download.html

Linux

Cài đặt với hệ điều hành Ubuntu-based:

  1. sudo add-apt-repository ppa:mc3man/trusty-media
  2. sudo apt-get update
  3. sudo apt-get dist-upgrade
  4. sudo apt-get install ffmpeg

Windows

  1. Tải về chương trình Zeranoe FFmpeg: ffmpeg.zeranoe.com/builds/
  2. Chạy file ff-prompt.bat để gắn đường dẫn của ffmpeg.exe vào System Path.
  3. Vào Command Prompt, gọi ffmpeg –h để kiểm tra xem FFmpeg đã được cài đặt thành công hay chưa.

Ngoài ra, nếu bạn muốn sử dụng GUI thay cho CLI, sau đây là các chương trình mã nguồn mở hỗ trợ giao diện cho FFmpeg:

Sử dụng FFmpeg

FFmpeg Command Line Options

Sau đây là cú pháp sử dụng để convert một video về WebM:

ffmpeg -i <source> -c:v libvpx -b:v 1000K –c:a libopus out.webm

Với các tuỳ chọn:

  • -i: Chỉ định FFmpeg biết tập tin đầu vào cần convert.
  • -c:v libvpx: Chỉ định FFmpeg encode video bằng VP8.
  • -b:v 1000K: Chỉ định FFmpeg encode video với bitrate là 1000 kilobits.
  • -c:a libopus: Chỉ định FFmpeg encode audio bằng Opus.

Các tuỳ chọn phổ biến khác như:

  • -threads: Chỉ định FFmpeg sử dụng multithreading. Nhập số lượng core để xử lý hoặc số 0 để sử dụng tất cả.
  • -an: Tắt audio. Sử dụng khi cần convert file *.gif sang *.webm, hoặc tạo video mà không cần audio.
  • -crf: Định giá trị CRF từ 4-63. Số càng thấp chất lượng càng cao, nên chọn từ số 10 trở xuống để được video tốt nhất.
  • -ss: Sử dụng tham số này khi muốn cắt video nhỏ từ một video lớn.
  • -t: Định tổng thời gian mà video cần cắt. Ví dụ muốn cắt một cảnh từ giây thứ 5 đến giây thứ 20 của một đoạn clip như sau: -ss 00:00:05 –t 00:00:15
  • -vf: Xây dựng bộ lọc trong quá trình encode, với cú pháp: -vf <filter>=<param>
  • scale: scale nhận 2 đối số phân cách bởi dấu hai chấm, chỉ định chiều rộng và dài của video. Chọn số -1 nếu cần FFmpeg scale video theo tỷ lệ của video gốc, ví dụ: -vf scale=640:-1.
  • -metadata: Thay đổi metadata của video, ví dụ nếu muốn thêm title vào metadata: -metadata title="STDIO ©".
  • Ngoài ra, còn có các tuỳ chọn nâng cao khác để hiệu chỉnh video theo yêu cầu mong muốn như 2-pass encoding, audio channel, tolerance, … có thể tham khảo tại các trang web nằm ở cuối bài.

Sau đây là các video có sử dụng thư viện của FFmpeg, đây là đoạn phim gốc sử dụng H.264/AAC, kích thước 374.63 KB.

Đây là phim được convert từ đoạn clip gốc VP8/Vorbis 224.97 KB: File small.webm

Video sử dụng VP8 có kích thước nhỏ hơn H.264 40%, phù hợp để chia sẻ trên Internet.

Ngoài ra, nếu cần yêu cầu FFmpeg convert video có kích thước lớn hoặc cần đảm bảo chất lượng cho video sau khi convert, tùy chỉnh các tùy chọn nâng cao phù hợp. Sau đây là một bộ phim hoạt hình mã nguồn mở được sử dụng làm ví dụ: Big Buck Bunny: bbb3d.renderfarming.net/download.html

Chọn video Standard 2D – 480p HD – 24fps (MPEG-4/AC3) với kích thước 210 MB:

MPEG-4/AC3
Input Details

Đây là video convert bằng FFmpeg trên Linux Mint, với tuỳ chọn sau:

ffmpeg -i input.avi -c:v libvpx-vp9 -pass 1 -b:v 1000K -threads 8 -speed 4 \
-tile-columns 6 -frame-parallel 1 \
-an -f webm /dev/null && \
ffmpeg -i input.avi -c:v libvpx-vp9 -pass 2 -b:v 1000K -threads 8 -speed 1 \
-tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 \
-c:a libopus -b:a 64k -f webm out.webm

Nếu sử dụng FFmpeg trên Windows thì thay "/dev/null" bằng "NUL".

Đây là phương pháp 2-pass encoding, lần pass đầu tiên FFmpeg sẽ tạo một file log dạng "ffmpeg2pass-X.log" với "X" là số stream, và lần pass thứ 2 sẽ tạo file output "out.webm". Sau khi convert, thu được video VP9/Opus 73.5 MB:

VP9/Opus
VP9 Details

Đây là video convert bằng WebM for Retards, với các tuỳ chọn như hình sau:

WebM for Retards - Options

Thu được video VP8/Vorbis 145 MB:

VP8/Vorbis
VP8 Details

Như vậy, sử dụng WebM sẽ giảm đáng kể bộ nhớ, đồng thời sử dụng ít chi phí cho rendering, thuận tiện cho ta đặt video vào website.

WebM trên HTML5

Trước đây, khi muốn chèn video vào Web cần các plugin như Silverlight, Adobe Flash hỗ trợ cho người dùng chạy video. Tuy nhiên, việc sử dụng phần mềm bên thứ ba rất nguy hiểm do kẻ xấu có thể lợi dụng lỗ hổng bảo mật của phần mềm để ăn cắp thông tin người dùng. Vì vậy, HTML5 video player là giải pháp thay thế cho các phần mềm đó.

Cách chèn WebM vào trang web bằng HTML <video>:

<video controls>
    <source src="video.webm" type="video/webm" />
    <source src="video.mp4" type="video/mp4" />
</video>

Các trình duyệt hiện nay đều hỗ trợ khả năng xem WebM VP8/VP9, dần dần thay thế cho các công nghệ nén video trả phí khác như H.264/H.265.

Tham khảo

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024