Trước tiên, bạn nên hiểu sự khác biệt giữa việc sử dụng các cấu hình FFmpeg và các tùy chọn dòng lệnh trực tiếp. -vpre
sử dụng một .ffpreset
tập tin nằm trong /usr/share/ffmpeg/
hoặc bất cứ nơi nào ffmpeg được cài đặt. Đó là một loạt các cặp tùy chọn = giá trị và trong trường hợp của bạn, bạn sẽ phải tự xác định nó (ít nhất là tôi không biết một baseline
cài đặt sẵn được vận chuyển với ffmpeg).
Tôi khuyên bạn không nên sử dụng các cài đặt trước trừ khi bạn tự tạo và biết các tùy chọn dòng lệnh để làm gì. Tôi đã sử dụng ffmpeg trong nhiều năm nay và tôi chưa bao giờ sử dụng các cài đặt trước mà tôi chưa bao giờ thực sự phải làm.
Một dòng lệnh điển hình để tạo video H.264 tương thích với hầu hết các thiết bị sẽ là:
ffmpeg -i <input> \
-c:v libx264 -crf 23 -profile:v baseline -level 3.0 -pix_fmt yuv420p \
-c:a aac -ac 2 -b:a 128k \
-movflags faststart \
output.mp4
Một số lưu ý:
H.264 / AAC là sự kết hợp tốt nhất để hỗ trợ rộng rãi trong HTML5. Các trình duyệt không có bộ giải mã H.264, tuy nhiên, cũng sẽ cần một video VP8 / Vorbis. Đối với một số ví dụ dòng lệnh, xem câu trả lời này . Xem thêm trang hỗ trợ trình duyệt của Wikipedia cho các codec khác.
H.264 cũng hoạt động tốt trên các thiết bị di động.
Các tùy chọn -profile:v baseline
và -level 3.0
chỉ cần thiết cho các thiết bị di động cũ không thể xử lý các tính năng thâm dụng CPU của H.264. Bạn thường có thể bỏ chúng ra hoặc thay vào đó sử dụng -profile:v main
.
CRF đặt chất lượng (18 Hàng28 là phạm vi hợp lý, thấp hơn có nghĩa là chất lượng tốt hơn). Tất nhiên bạn cũng có thể sử dụng bitrate cố định với -b:v 1000k
hoặc tương tự. Chọn một bitrate phù hợp với độ phân giải của video. Một số thiết bị có công suất thấp có thể không thể xử lý bitrate cao không cần thiết.
Các -movflags faststart
tùy chọn là điều cần thiết cho streaming, vì nó di chuyển các siêu dữ liệu chứa đến đầu của tập tin thay vì để nó ở cuối. Điều này sẽ cho phép phát lại ngay lập tức bắt đầu thay vì phải đợi tệp được tải hoàn toàn.
Tuy nhiên, tất cả bắt nguồn từ việc tìm mẫu số chung thấp nhất cho tất cả các thiết bị bạn đang nhắm mục tiêu, có thể không phải lúc nào cũng tồn tại. Chắc chắn bạn sẽ không muốn sử dụng bất kỳ codec nào khác (nghĩa là tệ hơn ) so với H.264. Trên thực tế, sẽ không khôn ngoan khi cung cấp video được mã hóa Đường cơ sở cho các khách hàng có thể giải mã cấu hình Chính hoặc Cao. Bạn sẽ đánh đổi chất lượng chống lại sự phức tạp giải mã giảm.
Theo kinh nghiệm của tôi, các thiết bị Android có thể phát Baseline H.264 với âm thanh AAC-LC trong một thùng chứa MP4 tốt. Tôi chưa bao giờ có vấn đề với nó. Trên thực tế, một số thiết bị cũng có thể phát cấu hình cao hơn, mặc dù nó không được hỗ trợ chính thức. iOS nói chung cũng hỗ trợ Baseline H.264, nhưng bạn chắc chắn cũng có thể sử dụng Cấu hình chính trên một số thiết bị. Xem bài đăng này (một chút lỗi thời) cho một số hướng dẫn.
Nếu bạn có người dùng gặp sự cố phát lại, bạn cần tìm hiểu video nào đang gây ra sự cố và nhận thêm thông tin chi tiết về phần cứng và phần mềm trình phát nào họ đang sử dụng. Sau đó chúng ta có thể nói về việc khắc phục sự cố cụ thể đó.