ffmpeg устанавливает дорожку субтитров по умолчанию

При добавлении дорожки субтитров .ass к mkv-видео с помощью ffmpeg она не устанавливается в качестве дорожки по умолчанию, поэтому при воспроизведении вам придется вручную включать субтитры. Можно ли установить флаг по умолчанию для дорожки субтитров?

Используемая команда ffmpeg:

ffmpeg -i video.mp4 -i subtitles.ass -c:v libx264 -preset veryslow \
 -pix_fmt yuv420p10le -c:a copy -c:s copy output.mkv

Обратите внимание, что я хочу сохранить формат субтитров .ass, а не преобразовывать субтитры в mov_text, как предлагается в этом аналогичном вопросе: Как установить потоки по умолчанию с помощью ffmpeg

Впоследствии с помощью mkvpropedit можно установить флаг по умолчанию следующим образом:

mkvpropedit output.mkv --edit track:s1 --set flag-default=1

Но можно ли сделать это напрямую с помощью ffmpeg?


person blörk    schedule 16.11.2014    source источник
comment
SO, вероятно, неправильный сайт для этого вопроса, но сам вопрос действителен. У меня такая же проблема.   -  person Tobia    schedule 18.12.2014


Ответы (2)


Я думаю, что согласно этот патч, теперь это возможно . По крайней мере, для меня это работает с:

ffmpeg -i in.mp4 -i in.srt -c copy -disposition:s:0 default out.mkv

Примечание s в -disposition:s:0 в этом случае означает субтитр, а не поток. Для выбора второй пары по индексу используйте -disposition:1.

person Community    schedule 05.02.2016
comment
Начиная с версии 3 ffmpeg уже реализованы -disposition, но еще не задокументированы. - person Kondybas; 11.03.2016
comment
-disposition был недавно задокументирован. - person llogan; 21.11.2016

Вы можете использовать "принудительно" вместо значения по умолчанию, чтобы заставить vlc воспроизвести его.

ffmpeg -f mp4 -i outfile.mp4 -f srt -i VTS_07_0.EnglishV2.srt -c:v copy -c:a copy -metadata:s:a:0 language=Japanese -c:s mov_text -metadata:s:s:0 language=English -disposition:s:s:0 forced mix.mp4
person MRDKVV    schedule 21.11.2016
comment
Спасибо, отлично работает. Вопрос: почему вы используете идентификатор субтитров s дважды, т.е. -disposition:s:s:0, а не -disposition:s:0? Пытаюсь полностью понять ваш синтаксис. - person RocketNuts; 27.01.2019
comment
@RocketNuts: первый s для потока, второй для subtitle. Это описано в документации для переключателя -map_metadata ffmpeg. (Но это для -metadata. Судя по документации, я не думаю, что это правильно делать для -disposition.) - person Nate C-K; 09.04.2019