Я пытаюсь кодировать видео с ffmpeg в H.264 (через библиотеку libx264) с постоянной скоростью передачи. Я знаю, я знаю, что VBR часто предпочтительнее, но для этой конкретной работы я должен использовать CBR (столько же, сколько и столько килобайт в секунду, это не должно быть точных килобайт на фрейм, afaik), Мое тестовое видео, которое я использую для тестирования, находится здесь: http://a1408.g.akamai.net/5/1408/1388/2005110403/1a1a1ad948be278cff2d96046ad90768d848b41947aa1986/sample_iTunes.mov.zip (он исходит из http://support.apple.com/kb/HT1425)
Я могу получить постоянную скорость передачи данных при кодировании видео с помощью MPEG-4 Video (используя команды 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 дня на поиски в Google, но я не могу заставить его работать. Если я кодирую видео с помощью кодировщика MainConcept H.264, я могу получить постоянный битрейт, но мне нужно это для работы с ffmpeg.
Если кто-то может помочь мне понять, как сделать кодировку CBR H.264 с помощью FFmpeg, я буду любить вас навсегда!