На самом деле, это сложная вещь. Аналогичная концепция была реализована http://ucsniff.sourceforge.net/videosnarf.html для h264, но они не поддерживают h265, поэтому я принял метод. Основная идея заключается в том, что вы должны добавить некоторые части, которые отсутствуют.
Как упоминается в https://tools.ietf.org/html/rfc7798, заголовок выглядит так:
+---------------+---------------+
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F| Type | LayerId | TID |
+-------------+-----------------+
Необходимо добавить удаленный заголовок для каждого пакета элементарного потока, который составляет 4 байта (00 00 00 01).
Но мы все знаем, что пакеты h265 слишком длинные, и большинство из них фрагментированы, и, как я понимаю, такие проигрыватели, как VLC, не поддерживают фрагментацию. Таким образом, вы должны собрать их.
Этот процесс предназначен только для фрагментированных типов пакетов (например, 49). У вас есть дополнительный заголовок, который выглядит так:
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|S|E| FuType |
+---------------+
биты S и E говорят вам, как собрать пакеты. Первый пакет в последовательности имеет S, E = 1,0, а остальные продолжаются с S, E = 0,0 (может быть, несколько пакетов), а последний пакет имеет S, E = 0,1. Все байты полезной нагрузки объединяются, после чего создается новый заголовок путем замены типа в главном заголовке на упомянутый здесь FuType (не забывайте заголовок 4Byte):
+---------------+---------------+--------------
|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+--------------
|F| FuType | LayerId | TID | all the concatenated payloads
+-------------+-----------------+---------------
Просто помните, что вы должны сохранять как фрагментированную, так и нефрагментированную полезную нагрузку, поскольку большинство нефрагментированных пакетов содержат важную информацию, такую как размер изображения, которая не может быть опущена. Элементарный поток может быть воспроизведен SMplayer или вы можете использовать VLC.
Для VLC вы должны установить демультиплексор на h265.