Я пытаюсь закодировать mkv-файл, сохраняя при этом аудиопотоки и субтитры. Это команда, которую я использую:
avconv -i inputfile.mkv -c:v mpeg2video -acodec copy - scodec copy -b:v 5000k -maxrate:v 6000k -bufsize 1835k outputfile.mkv
Проблема в том, что мой mkv содержит более одного аудиопотока и субтитров. А с помощью верхней команды выходной файл содержит только помеченные по умолчанию аудиопоток и субтитры. Есть ли какая-либо дополнительная команда для копирования всех аудиопотоков и субтитров?
Чтобы заставить FFmpeg / Libav скопировать все входные потоки на выход, используйте опцию -map 0
.
ffmpeg -i in.mkv \
-map 0 -c copy \
-c:v mpeg2video -qscale:v 2 \
out.mkv
FFmpeg и Libav должны вести себя здесь одинаково. См. Как использовать опцию -map в вики FFmpeg. Попробуйте предложенную опцию ' -qscale: v 2 ' в этой командной строке, она должна дать отличные результаты или просто сохранить параметры битрейта, как указано в вашем собственном посте.