Вопрос:
Законно ли использовать кодирование «прохода 1» исходного видео с одним разрешением/битрейтом в качестве входных данных для кодирования «прохода 2» того же источника сдругойразрешение/битрейт? Я попробовал и этоувидимсяработать, но я совсем не уверен, что это будет работать в общем случае: профиль потока (выбор кадра I/P/B и т. д.) выглядит иначе, чем при использовании тех же параметров для обоих проходов, но также выглядит «достаточно хорошо».
Я нахожусь в той точке, когда мне нужен авторитетный ответ на этот вопрос.
Почемув проклятии 1Вы бы это сделали?
Потому что двухпроходное кодирование исправляет раздражающую ошибку в FFMPEG (x264, на самом деле), которая, вероятно, не будет исправлена в ближайшее время: в зависимости от скорости вашего компьютера, первые ~1 секунда видео часто будут иметь крайне неподходящий битрейт. Это очень легко воспроизводится с помощью исходного потока с высоким битрейтом, транскодированного в низкий битрейт на очень быстром компьютере (например,EC2 c4.8xlarge). Простой i7 четырехъядерный MacBook ProНЕ ЯВЛЯЕТСЯдостаточно для воспроизведения этой ошибки.
Это будет либоОЧЕНЬвысокий:
однопроходный CBR безВБВуказанный
(игнорируйте тот факт, что CBR без VBVэто вообще не CBR)
или слишком низко:
- однопроходный CBR сВБВ
- однопроходный VBR:QScaleсВБВи максрейт
Измерения качества VIFp и SSIM показывают, что более низкие/высокие битрейты действительно соответствуют неоправданно заниженному/завышенному качеству (т. е. битрейтне должнабыли выше или ниже).
Выполнение двухпроходного кодирования CBR работаетбольшойи решает проблему... если у вас есть на это время. К сожалению, я не могу позволить себе задержку двухпроходного кодирования для одного разрешения.
Так что же вы хотите сделать?
В настоящее время я выполняю начальное перекодирование с более низким разрешением (480). Это охватит как можно больше устройств воспроизведения. Я хотел бы использовать это в качестве своего прохода 1. Поскольку разрешение 480 в любом случае отстой, я могу просто опубликовать это видео прохода 1 как свое 480, независимо от любых глупых битрейтов в первую секунду видео.
Тогда я хотел бы использовать480 проход 1 информацияи только пройти 2 на моих более высоких разрешениях. В случае CBR/VBV это будет:
ffmpeg -i source.mp4 -pass 1 -vf scale=852:480 -c:v libx264 -b:v 1000k ... 480.mp4
ffmpeg -i source.mp4 -pass 2 -vf scale=1280:720 -c:v libx264 -b:v 2500k ... 720.mp4