Để hỗ trợ nhiều trình duyệt, bạn cần sử dụng FFmpeg để chuyển đổi tệp .mov
thành hai vùng chứa khác nhau: vùng chứa MP4 và vùng chứa WebM. Trong thực tế, có thể bạn sẽ chỉ định một bộ mã hoá và giải mã cùng lúc. Hiện tại, chúng ta sẽ cho phép FFmpeg sử dụng các chế độ mặc định.
Nếu những khái niệm này còn mới mẻ, bạn nên đọc bài viết Kiến thức cơ bản về tệp đa phương tiện trước khi tìm hiểu kỹ hơn. Ngoài ra, nếu bạn chưa cài đặt FFmpeg, hãy đọc bài viết Kiến thức cơ bản về ứng dụng đa phương tiện để thiết lập Docker.
Chúng tôi đang sử dụng bản cài đặt Docker đề xuất và tệp glocken.mov trong phần Chuẩn bị các tệp nội dung nghe nhìn cho web được thêm vào thư mục media
. Chúng tôi đã dùng FFmpeg phiên bản 4.3.2 cho tất cả các lệnh trong phần này.
Vùng chứa
Trước tiên, chúng ta cần tạo hai vùng chứa từ tệp .mov
có đuôi tệp .mp4
và .webm
có cả luồng âm thanh và video bên trong tệp.
Hãy xem bài viết Kiến thức cơ bản về tệp nội dung nghe nhìn để biết thêm về vùng chứa và luồng nếu bạn không biết sự khác biệt giữa chúng.
MP4
/media # ffmpeg -i glocken.mov glocken.mp4
WebM
/media # ffmpeg -i glocken.mov glocken.webm
WebM mất nhiều thời gian tạo hơn so với MP4. Không có gì đáng ngạc nhiên khi bạn xem kết quả. Mặc dù MP4 nén thành khoảng 83%
kích thước của tệp gốc, WebM nhưng kích thước của tệp gốc lại giảm xuống 78%
, nhưng có thể nhỏ hơn nhiều.
Kết quả còn tuỳ trường hợp. Xin lưu ý rằng FFmpeg 4.2.2
đã đặt tốc độ bit mặc định của video thành 200k
và trong 4.3.2
, FFmpeg không đặt tốc độ bit mặc định.
Vì vậy, video không còn đơn thuần4%
của bản gốc. Bạn có thể tự kiểm tra điều này bằng cách sử dụng lệnh baash ls -a
trong thư mục chứa các tệp đa phương tiện của bạn.
Ví dụ:
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 9503301 Mar 7 18:30 glocken.webm
Để có một tệp nhỏ, bạn sẽ làm như sau:
/media # ffmpeg -i glocken.mov -b:v 200k glocken.webm
...
frame= 300 fps=3.6 q=0.0 Lsize= 483kB time=00:00:10.01 bitrate= 395.0kbits/s speed=0.121x
video:359kB audio:117kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.356068%
/media # ls -l
-rw-r--r-- 1 root root 12080306 Mar 7 12:16 glocken.mov
-rwx------ 1 root root 10106446 Mar 7 12:33 glocken.mp4
-rwx------ 1 root root 494497 Mar 7 18:45 glocken.webm
Kiểm tra bài tập của bạn
Để xác minh kết quả của bạn, hãy sử dụng FFmpeg và Shaka Packager như đã trình bày trong phần Thông tin cơ bản về ứng dụng đa phương tiện:
/media # packager input=glocken.mp4 --dump_stream_info
/media # ffmpeg -i glocken.mp4
Bộ mã hoá và giải mã
Tiếp theo là bộ mã hoá và giải mã. Như đã nêu trong bài viết Kiến thức cơ bản về tệp nội dung nghe nhìn, bộ mã hoá và giải mã không giống với vùng chứa (loại tệp). Hai tệp thuộc cùng một loại vùng chứa có thể chứa dữ liệu được nén bằng các bộ mã hoá và giải mã khác nhau. Ví dụ: định dạng WebM cho phép mã hoá âm thanh bằng Vorbis hoặc Opus. Để thay đổi bộ mã hoá và giải mã, chúng tôi sẽ sử dụng FFmpeg. Ví dụ: lệnh này sẽ xuất ra một tệp .mkv
có bộ mã hoá và giải mã âm thanh vorbis
và bộ mã hoá và giải mã video av1
.
/media # ffmpeg -i glocken.mov -c:a vorbis -c:v av1 glocken.mkv
Trong ví dụ này, cờ -c:a
và -c:v
dùng để chỉ định lần lượt các bộ mã hoá và giải mã âm thanh và video.
Trang Chuyển đổi nội dung nghe nhìn liệt kê các lệnh cần thiết để chuyển đổi bộ mã hoá và giải mã. Các bảng dưới đây tóm tắt các thư viện dùng trong FFmpeg để thực hiện việc chuyển đổi bộ mã hoá và giải mã cho các tệp WebM và MP4. Đây là các định dạng đề xuất tương ứng cho DASH và HLS.
Video
Bộ mã hoá và giải mã | Phần mở rộng | Thư viện |
---|---|---|
av1 | WebM, mkv | libaom-av1 |
h264 | MP4 | libx264 |
vp9 | WebM | libvpx-vp9 |
Âm thanh
Bộ mã hoá và giải mã | Phần mở rộng | Thư viện |
---|---|---|
aac | MP4 | aac |
đàn opus | WebM | cung thiên bình |
xoáy tròn | WebM | người tự do |
Tiếp theo, chúng tôi sẽ hướng dẫn bạn cách thay đổi tốc độ bit của các tệp mới tạo.