ffmpeg перекодировать дважды сжимать дальше?
У меня есть коллекция видео AVI (скажем, A).
Сначала я конвертирую их в MPEG4 Part2 (скажем, B), используя ffmpeg -i ${inname} -vf scale=340:256,setsar=1:1 -q:v 1 -c:v mpeg4 -g 12 -f rawvideo ${outname}
, Общий размер файла составляет 3,5 ГБ.
Затем, используя B в качестве входных данных, я применяю ту же команду, чтобы снова перекодировать B в C, который имеет размер 3,1G.
Я думал, что B и C имеют одинаковый формат и, следовательно, должны иметь одинаковый размер файла? Почему бы и нет, и как я могу решить эту проблему, чтобы избежать потери информации во втором процессе транскодирования?
1 ответ
Ваша процедура похожа на:
- (источник) A → B (результат)
- (источник) B → C (результат)
Кодирование с потерями производит видео, которое отличается от его источника, поэтому кадры B отличаются от кадров A. Это означает, что два источника в вышеописанной процедуре отличаются.
Я думал, что B и C имеют одинаковый формат и, следовательно, должны иметь одинаковый размер файла? Почему бы и нет?
Потому что они производятся из разных источников видео.
Как я могу решить это, чтобы убедиться, что нет потери информации во втором процессе транскодирования?
- Используйте кодирование без потерь
- или не транскодировать более одного раза.