Я пытаюсь закодировать видео с помощью ffmpeg в H.264 (через библиотеку libx264) с постоянной скоростью передачи данных. Я знаю, я знаю, VBR часто предпочтительнее, но для этой конкретной работы мне необходимо использовать CBR (до тех пор, пока это так много килобайт в секунду; это не обязательно должен быть точный килобайт в кадре) , Вот пример моего видео, которое я использую для тестирования: http://a1408.g.akamai.net/5/1408/1388/2005110403/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_iTunes.mov.zip (взято из http://support.apple.com/kb/HT1425)
Я могу получить постоянную скорость передачи данных при кодировании видео с помощью видео MPEG-4 (используя команды ffmpeg -i sample_iTunes.mov -b 819968 -minrate 819968 -maxrate 819968 out.mov
), и скорость передачи данных соответствует ожидаемой. При чтении спецификаций видео через QuickTime Inspector, скорость передачи данных составляет 844,94 кбит / с. Круто.
Однако, когда я изменяю кодек на libx264, он, кажется, полностью игнорирует мои запросы битрейта! Я пробую команду "ffmpeg -i sample_iTunes.mov -vcodec libx264 -vpre medium -b 819968 -vb 819968 -minrate 819968 -maxrate 819968 -bufsize 400000 test.mov
". Но когда я проверяю характеристики видео через QuickTime Inspector, скорость передачи данных составляет 254,74 кбит / с. WTF? Это даже не близко!
Я пытался изменить так много параметров и добавить кучу разных вещей, и я потратил 2 дня на поиски, но я не могу заставить его работать. Если я закодирую видео с помощью кодера MainConcept H.264, я получу постоянный битрейт, но мне нужно это для работы с ffmpeg.
Если кто-то может помочь мне разобраться, как выполнять кодирование CBR H.264 с помощью FFmpeg, я буду любить вас вечно!