Я использую Debian 9. У меня есть файл с несколькими звуковыми дорожками и субтитрами в PGS. Я хотел бы передать видео в h265 и сохранить все звуковые дорожки и субтитры как есть в контейнере .mkv, поскольку, как я понимаю, mp4 не поддерживает субтитры на основе изображений.
Я использую следующую команду:
ffmpeg -i entrada.264.mkv -c:v libx265 -f matroska -map 0 salida.265.mkv
но я получаю эту ошибку в ffmpeg:
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 6 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 7 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 8 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 9 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 10 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[matroska,webm @ 0x55ec1759fee0] Could not find codec parameters for stream 11 (Subtitle: hdmv_pgs_subtitle (pgssub)): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Only SUBTITLE_ASS type supported.
Subtitle encoding failed
А если вы захотите скопировать их по одному, просто сожгите первый.
Здесьданные рассматриваемого файла:
В итоге:
Ожидаемый результат: перекодировать видеофайл в h265 и скопировать все аудио и субтитры, не изменяя их, или записать их в видео, чтобы иметь возможность выбрать, какой из них использовать.
Полученный результат: Ошибка из-за отсутствия параметров для субтитров.
Есть ли способ сделать это напрямую из ffmpeg, не извлекая субтитры по одному, а затем не добавляя их к видео через какую-нибудь программу типа mkvmerge?
решение1
Потоковая копия(ремультиплекс) всего, кроме видео:
ffmpeg -i entrada.264.mkv -map 0 -c copy -c:v libx265 salida.265.mkv
-map 0
включает все потоки от входа до выхода вместо того, чтобы полагаться наповедение выбора потока по умолчаниюкоторый включает только один поток каждого типа потока.
решение2
Это не ошибка. Это предупреждающее сообщение. -loglevel warning
Возвращает сообщение:
ffmpeg -i entrada.264.mkv -loglevel warning -c:v libx265 -f matroska -map 0 salida.265.mkv
И -loglevel error
подавляет его:
ffmpeg -i entrada.264.mkv -loglevel error -c:v libx265 -f matroska -map 0 salida.265.mkv
Я проверил все субтитры моего собственного выходного mkv-файла черезРедактировать субтитрыи они все целы. Я думаю, это предупреждение отображается только для того, чтобы предупредить вас, если вы решите перекодировать эти субтитры позже.