slack писал(а):
...Пошел экспериментировать
Докладываю результат экспериментов. Может, кому пригодится.

Таки победил эту проблему методом малонаучного тыка.

Последовательность действий для добавления дорог, титров, глав и т.п. в раздаваемый mkv-контейнер такова.
1. Потрошим его с помощью mkvextract или tsmuxer. (собрать требуемую конфигурацию сразу mkvmerge не получается - см. мой пост выше)
2. Далее tsmuxer'ом пакуем в ts-контейнер только h264-видеопоток, устанавливая значение FPS на 24/1.001
3. Далее eac3to перегоняем полученный ts-файл в mkv (пробовал перегнать с помощью graphedt, haali media splitter+haali matroska muxer, - получаемый файл имеет fps=25, никакие дальнейшие мои манипуляции с ним не привели к успеху)
4. У полученного файла FPS=23 и все его попытки муксить в mkv приводят к рассинхрону! Однако eac3to выдает, помимо mkv-файла, еще один файл с расширением .gaps, а в логе пишет, что в случае рассинхрона следует повторить операцию. Так что
ничего не делая с файлами просто повторояем предыдущую команду.
5. Муксим полученный mkv с аудиодорогами, сабами и главами. ВСЕ РАБОТАЕТ!
Охренеть как муторно.

Но как сократить процедуру не знаю. Дело тут, видимо, в том, исходный видеопоток содержал какую-то нахрен gap-структуру, из-за этого все шло наперекосяк. Выручил только eac3to.
На радостях от таких возможнойстей eac3to пошел перемуксивать подряд ts- и m2ts-контейнеры. Штук 30. Результат. В 5-6 случаях eac3to отказался муксить исходные файлы. Однако эти "кривые" с точки зрения eac3to файлы прекрасно перемуксил graphedt. Попробовал последним перемуксить все подряд ts- и m2ts-контейнеры, на коих мучил eac3to. Съел все, кроме 2.
В общем, итог. Связка eac3to и graphedt вместе с tsmuxer'ом и mkvmerge пока перемолола все, что я им подсунул. По отдельности глюки есть у всех.