Есть большое количество видео-роликов, которые содержат ошибки. К сожалению, простое копирование видео с помощью -copy вызывает ошибку. Подскажите строку вызова ffmpeg, которая позволит перекодировать видео, сохранив исходное качество видео или минимизировать ухудшение качества. Важно, чтобы видео имело максимальную совместимость со всеми устройствами для просмотра из web. Добавлю, что ролики имеют разное разрешение от 360p до 1080p+
То, что я нагуглил, не внушает мне доверия:
Например:
ffmpeg -vpre videobam -y -i input.avi -s 320x240 -vcodec libx264 -acodec libfaac -threads 0 -ab 64k -b 400k -bt 500k -g 24 -r 24 temp.mp4
1. В строке содержится совершенно непонятный фрагмент -vpre videobam -y, который я не могу интерпретировать
2. Используется кодек libfaac, который на данный момент не является частью ffmpeg, т.е. является устаревшим
3. Параметр -b задает фиксированный битрейт, и его значение (судя по таблицам соответствия разрешениям) может оказаться недостаточным в некоторых случаях, т.е. ухудшить качество.
Я практически не знаком с ffmpeg и на данный момент изучил не все параметры из строки выше, но полагаю, что и некоторые другие параметры являются компромиссными, нацеленными на оптимизацию размер/качество или скорость обработки/качество.
Хотелось бы получить исчерпывающий ответ(сама строка + пояснения), который внесёт ясность.
Самая главная проблема, с которой я столкнулся - это использование дефолтных значений для незаданных параметров. Казалось бы, от программы требуется, чтобы она сохранила их как в источнике, раз уж они не были заданы, но она заменяет их. В результате, чтобы сохранить эти параметры нужно их считать, а потом снова задать. Получается, что нужно писать bash-скрипт, который будет делать всё это. Удивительно, что обычное кодирование с целью устранения ошибки превращается в целый квест, если необходимо сохранить качества. И да, я до сих пор так и не понял, как даже за неограниченное время перекодировать видео без потери качества, не увеличив его размер.