Вопрос или проблема
У меня такая ситуация:
- file1.mkv (видео с двумя дорожками 5.1 и несколькими субтитрами)
- file1.mka (две стерео аудиодорожки)
Я хочу объединить файлы в один выходной файл, который будет содержать:
- 4 аудиодорожки (оригинальные дорожки 5.1 и еще две из MKA файла)
- субтитры из MKV
Вот команда, которую я пробую:
@ffmpeg.exe -i "file1.mkv" -i "file1.mka" -map 1 -map 0 -c:v copy -c:a copy -c:s copy "output.mkv"
Проблема в том, что output.mkv действительно имеет все, но дорожки из MKA беззвучны, и некоторые плееры даже зависают, когда я пытаюсь их воспроизвести. Остальные две дорожки (из оригинального MKV) работают нормально.
Есть ли что-то, что я делаю неправильно?
Почему бы не использовать mkvmerge? https://mkvtoolnix.download/downloads.html
mkvmerge.exe --output E:\output.mkv --audio-tracks 1,2 --subtitle-tracks 3,4
--no-chapters --language 0:und --default-track 0:yes --compression 0:none
--language 1:und --default-track 1:yes --compression 1:none --language 2:und
--compression 2:none --language 3:und --compression 3:none --language 4:und
--default-track 4:yes --compression 4:none "E:\file1.mkv" --language 0:eng
--compression 0:none --language 1:und --compression 1:none "E:\file2.mka"
--track-order 0:0,0:1,0:2,0:3,0:4,1:0,1:1 --probe-range-percentage 0.50
Ответ или решение
Для объединения видео в формате MKV с аудиотреками MKA и сохранением субтитров необходимо учитывать несколько факторов. Ниже представлены рекомендации по правильной реализации этой задачи, а также разбор вашей команды и способа использования альтернативного инструмента – mkvmerge.
Проблема
Вы столкнулись с проблемой, когда выходной файл содержит аудиотреки из MKA, но они не воспроизводятся, и некоторые плееры даже выдают сбой. Это может происходить по нескольким причинам, например, из-за неправильного кодека или аудиоканалов, используемых в MKA.
Решение через FFmpeg
Если вы хотите продолжать использовать FFmpeg, убедитесь, что вы правильно задаете параметры для объединения аудио и видео. Попробуйте следующую команду:
ffmpeg -i "file1.mkv" -i "file1.mka" \
-map 0:v -map 0:a -map 0:s -map 1:a \
-c:v copy -c:a aac -b:a 192k -c:s copy \
"output.mkv"
Пояснение параметров:
-map 0:v
– это выбор видеотрека из первого файла (file1.mkv).-map 0:a
– это выбор всех аудиотреков (5.1) из первого файла.-map 0:s
– это выбор всех субтитров из первого файла.-map 1:a
– это выбор аудиотреков из второго файла (file1.mka).-c:v copy
– позволяет копировать видео без перекодирования.-c:a aac -b:a 192k
– обеспечивает, что аудиотреки будут закодированы в формате AAC с битрейтом 192 кбит/с.-c:s copy
– сохраняет субтитры без изменений.
Решение через mkvmerge
Использование mkvmerge может быть более удобным для этой задачи, так как он специально предназначен для обработки файлов MKV. Пример команды, который вы можете использовать:
mkvmerge --output "output.mkv" \
--audio-tracks 1,2 \
--subtitle-tracks 3,4 \
--no-chapters \
--language 0:und --default-track 0:yes --compression 0:none \
--language 1:und --default-track 1:yes --compression 1:none \
--language 2:und --compression 2:none \
--language 3:und --compression 3:none \
--language 4:und --default-track 4:yes --compression 4:none \
"E:\file1.mkv" \
--language 0:eng --compression 0:none \
--language 1:und --compression 1:none \
"E:\file1.mka"
Пояснение параметров:
--audio-tracks 1,2
– указывает на выбор стерео треков из файла MKA.--subtitle-tracks 3,4
– выбирает субтитры из MKV.--no-chapters
– отключает добавление глав.- Параметры
--language
и--compression
настраивают язык и параметры сжатия для треков. --track-order
определяет порядок треков в выходном файле.
Заключение
Оба подхода могут быть успешными, но использование mkvmerge может упростить процесс благодаря его функциональности, которая специально предназначена для работы с MKV. Если вы все же предпочитаете FFmpeg, убедитесь, что кодеки и параметры настроены правильно.
Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь задавать их.