Да, по крайней мере, согласно спецификации. Если вы посмотрите на ISO / IEC 14496-15 (3-е издание), он содержит определение Трек набора параметров :
Пример синхронизации на дорожке набора параметров указывает, что все наборы параметров необходимы
с этого времени в элементарном потоке видео находятся в этом или последующем параметре потока
образцы. Также в каждой точке должен быть образец набора параметров, который обновляется. каждый
образец набора параметров должен содержать точно наборы параметров последовательности и изображения, необходимые для
декодировать соответствующий раздел элементарного видео потока.
Насколько я понимаю, в этом случае вместо записи исходных данных SPS / PPS в поле avcC
в stbl
вы пишете отдельную дорожку, содержащую изменяющиеся данные SPS / PPS в качестве выборок синхронизации. Таким образом, по крайней мере, в соответствии со спецификацией, вы должны иметь выборки в этом потоке с временами представления t1, t2, t3, t4, t5, а сами выборки будут содержать обновленные данные SPS / PPS. Эта цитата из того же стандарта, кажется, согласна:
Наборы параметров: Если используется набор параметров элементарного потока, то выборка в параметре
поток должен иметь время декодирования, равное или предшествующее моменту вступления в силу набора (ов) параметров
мгновенно. Это означает, что для набора параметров, который будет использоваться в изображении, он должен быть отправлен до
образец, содержащий это изображение, или образец для этого изображения.
ПРИМЕЧАНИЕ Наборы параметров хранятся либо в описаниях сэмплов видеопотока, либо в наборе параметров.
поток, но никогда в обоих. Это гарантирует, что нет необходимости изучать каждую часть видео элементарно
поток, чтобы найти соответствующие наборы параметров. Это также позволяет избежать зависимости неопределенной продолжительности между образцом, который
содержит определение набора параметров и примеры, которые его используют. Хранение наборов параметров в образце
описания видеопотока предоставляют простой и статичный способ предоставления наборов параметров. Набор параметров
элементарные потоки, с другой стороны, являются более сложными, но допускают больший динамизм в случае обновлений.
Наборы параметров могут быть вставлены в элементарный поток видео, когда файл передается по транспорту, который
разрешает такие обновления набора параметров.
ИСО / МЭК 14496-15 (3-е издание) также определяет дополнительные блоки avc3
/ avc4
, которые при использовании должны позволять фактически записывать наборы параметров в полосе с единицами NAL видео:
Если имя записи примера - «avc3» или «avc4», применяется следующее:
Если выборка является единицей доступа IDR, все наборы параметров, необходимые для декодирования этой выборки, должны быть включены либо в запись выборки, либо в сам образец.
В противном случае (выборка не является единицей доступа IDR), все наборы параметров, необходимые для декодирования выборки, должны быть включены либо в запись выборки, либо в любую из выборок, начиная с предыдущей точки произвольного доступа к самой выборке. включительно.
Другой вопрос, несмотря на то, что стандарт позволяет достичь этого как минимум двумя способами (в диапазоне с avc3
, вне диапазона с треком с набором параметров), сколько игроков это соблюдают. Я бы предположил, что, по крайней мере, заглянув в источники ffmpeg, можно найти хорошее начало.
Ответы на этот вопрос также указывают на то, что многие демультиплексоры используют только поле avcC
, а не отдельную дорожку набора параметров, но пара быстрых поисков в Google показывает, что по крайней мере оба vlc На форумах / ffmpeg и в новостных рассылках есть упоминания об этих терминах, поэтому я бы сказал, что лучше всего попробовать скопировать такой файл и просто проверить, что происходит.