Tôi đang cố mã hóa video bằng ffmpeg thành H.264 (qua thư viện libx264) với tốc độ bit không đổi. Tôi biết, tôi biết, VBR thường được ưa thích, nhưng đối với công việc cụ thể này, tôi được yêu cầu sử dụng CBR (miễn là nó quá nhiều kilobyte/giây; nó không phải là một kilobyte chính xác cho mỗi khung hình, afaik) . video mẫu của tôi, tôi đang sử dụng để thử nghiệm là từ đây: http://a1408.g.akamai.net/5/1408/1388/2005110403/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_iTunes.mov.zip (nó xuất phát từ http://support.apple.com/kb/HT1425)Mã hóa video CBR H.264 với FFmpeg
tôi có thể có được một tốc độ bit không đổi khi mã hóa video với định dạng MPEG-4 video (sử dụng các lệnh ffmpeg -i sample_iTunes.mov -b 819968 -minrate 819968 -maxrate 819968 out.mov
), và các bit tỷ lệ là như mong đợi. Đọc thông số kỹ thuật của video thông qua QuickTime Inspector, nó có tốc độ dữ liệu là 844,94 kbit/s. Mát mẻ.
Tuy nhiên, khi tôi thay đổi codec thành libx264, dường như hoàn toàn bỏ qua các yêu cầu bitrate của tôi! Lệnh tôi đang thử là "ffmpeg -i sample_iTunes.mov -vcodec libx264 -vpre medium -b 819968 -vb 819968 -minrate 819968 -maxrate 819968 -bufsize 400000 test.mov
". Nhưng khi tôi kiểm tra thông số kỹ thuật của video thông qua QuickTime Inspector, nó có tốc độ dữ liệu 254,74 kbit/s. WTF? Nó thậm chí còn chẳng gần đúng!
Tôi đã thử thay đổi nhiều tham số và thêm hàng tấn thứ khác nhau và tôi đã dành 2 ngày để giải quyết vấn đề này, nhưng dường như tôi không thể làm việc đó được. Nếu tôi mã hóa video bằng bộ mã hóa MainConcept H.264, tôi có thể nhận được tốc độ bit không đổi, nhưng tôi cần điều này để làm việc với ffmpeg.
Nếu ai đó có thể giúp tôi tìm ra cách làm mã hóa CBR H.264 với FFmpeg, tôi sẽ yêu bạn mãi mãi!
Tôi vẫn thấy sự thay đổi đáng kể với các tùy chọn đó. Tuy nhiên, +1 vì nó dẫn tôi đến một tùy chọn thực sự giúp ích trong tình huống của tôi, '-muxrate'. Điều này bổ sung thêm null vào luồng truyền tải để thử và đạt được các mục tiêu CBR của bạn. Nó không hoàn hảo, nhưng nó đủ gần tôi. Theo như tôi có thể nói, 'ffmpeg' thực sự không hỗ trợ CBR.Min = avg = max cũng không hoạt động. Null-nhồi là gần như bạn có thể nhận được. –
Tôi có thể đến gần CBR bằng cách sử dụng các tùy chọn này để +1. Khi đặt thành 4000K, tôi nhận được 4000, 3999,9 và 3999,8, vì vậy không phải là CBR nhưng gần như chết tiệt! – zgr024