Подтвердить что ты не робот

Как заставить постоянную скорость передачи битов с помощью FFMPEG

Я использую FFMPEG (ввод командной строки) для преобразования моих видео в определенный выходной формат. Проблема, с которой я сталкиваюсь, - это когда я пытаюсь передать постоянную скорость передачи (700 кбит/с) в FFMPEG, результатом является выходное видео с другой скоростью передачи (скажем, 1000 кбит/с). Это явление происходит неизменно для всех видеороликов. Почему это происходит? Мне нужно поддерживать постоянную скорость передачи данных. Может ли кто-нибудь помочь мне.

Моя версия FFMPEG составляет 0,5

Параметр командной строки, который я передаю в FFMPEG,

-i {inputfile}
-b 700k -ab 64k
-vcodec libx264
-acodec libfaac -ac 2 -ar 44100
-y -s 320x240 
{outputfile}

EDIT:

Мне удалось заставить CBR с колебаниями +/- 3%, когда я использовал следующие параметры.

 ffmpeg -i myfile.avi
-b 4000k -minrate 4000k 
-maxrate 4000k -bufsize 1835k   out.m2v

Но когда я использовал -maxrate и-minrate вместе с моим набором параметров, я не смог заставить CBR. Мой набор параметров выглядит следующим образом:

-i {inputfile}
-b 1200k -minrate 1200k 
-maxrate 1200k -bufsize 1200k 
-ab 64k -vcodec libx264
-acodec libfaac -ac 2 -ar 44100
-y -s 320x240 
 {outputfile}

Почему это происходит?

4b9b3361

Ответ 1

Попробуйте следующее:

ffmpeg 
-i input 
-b 1200k 
-minrate 1200k 
-maxrate 1200k 
-bufsize 1200k 
-ab 64k 
-vcodec libx264 
-acodec aac -strict -2 
-ac 2 
-ar 44100 
-s 320x240 
-y output.mp4

Пришлось использовать aac вместо libfaac, для которого требуется "-строчный -2".

Также нужно было добавить ".mp4" для вывода имени файла.

Я переместил "-y" рядом с именем выходного файла, так как он сообщает ему перезаписать файл, но он, похоже, работал там, где у вас тоже.

Я сделал это на 64-битной ОС X 10.8.4; Версия ffmpeg 1.2.1-tessus.

Я видел, что одна и та же версия ffmpeg работает по-разному в 32-битных и 64-битных Linux-системах, поэтому кто знает, будет ли это работать для вас.