Я просмотрел документацию ISO 14496-10 и нашел несколько шестнадцатеричных строк для поиска кадров в необработанном потоке h264:
0x00000141,
0x00000101,
0x00000165
Если вы пройдете через свой поток и посчитаете эти шестнадцатеричные строки и свою кодировку с помощью ffmpeg и libx264, это должно дать вам довольно солидный счетчик кадров. (Пожалуйста, кто-нибудь исправит меня, если я ошибаюсь). Таким образом, если у вас есть общая продолжительность видео h264, и у вас есть FPS, который вы сможете легко получить из ffmpeg, тогда вы можете использовать количество кадров, рассчитанное в любом данном фрагменте данных, которые передаются MediaStreamSource, чтобы получить очень точная метка времени для вас MediaSampleSource. Надеюсь, это кому-нибудь поможет, потому что пару дней назад меня действительно расстраивало, когда мое воспроизведение было прерывистым.
Редактировать
Поскольку я протестировал свою функцию воспроизведения в DirectShow, я заметил, что она не идеальна и работает только для упрощенно кодированных потоков h264, использующих ffmpeg. h264 имеет переменные частоты кадров и битрейты. Хотя видео работает довольно плавно, проницательный глаз может видеть, что при более сложных последовательностях в видео время немного неловко. Я думаю, что для грубого проигрывателя потокового видео это хороший метод, особенно если часто используются ключевые кадры. Я подумал, что было бы справедливо добавить это, прежде чем я нажал на кнопку ответа.