Это все в спецификации MSE.
http://w3c.github.io/media-source/#sourcebuffer-coded-frame-removal
Шаг 3.3. Удалите все мультимедийные данные из этого буфера дорожек, которые содержат начальные временные метки, большие или равные начальному и меньшие, чем удаляемая конечная временная метка.
Таким образом, пользовательский агент удалит все запрошенные вами данные, от 0 до 8 с
Тогда
Шаг 3.4. Удалите все возможные зависимости декодирования для кодированных кадров, удаленных на предыдущем шаге, удалив все кодированные кадры из этого буфера дорожки между теми кадрами, которые были удалены на предыдущем шаге, и следующей точкой произвольного доступа после этих удаленных кадров.
Пользовательский агент удалит все кадры, которые зависят от тех, которые вы только что удалили. Благодаря тому, как работает h264 (и все современные видеокодеки), то есть все кадры, следующие от последнего ключевого кадра до следующего ключевого кадра, поскольку ни один из этих кадров теперь не может быть декодирован.
В диапазоне от 8 до 10 с ключевой кадр отсутствует, поэтому все они удалены
Почему последующие вызовы appendBuffer ничего не делают? Я ожидал бы их
повторно заполнить SourceBuffer.
Вы удалили данные, согласно спецификации, следующий кадр, который вы добавляете, должен быть ключевым кадром. Если добавленный вами сегмент не содержит ключевой кадр, ничего не будет добавлено.
Если данные, которые вы добавляете, состоят из одного ключевого кадра в начале, за которым следует только P-кадр, то вы не можете удалить ни один кадр в середине, не сделав непригодным для использования все последующие