Как обрабатывать метки времени в RTMP?

Я анализирую поток RTMP из захвата Wireshark и записывать данные мультимедиа в файл .flv. Я знаю, как рассчитать отметку времени, но как мне справиться с отметкой времени при ее переполнении?

0

Решение

Итак, я решил проблему следующим образом:
1) Разобрать заголовок RTMP (прочитать 4 байта от начала отметки времени) и получить отметку времени (u_int 32);

if ( ( _timestamp >> 8 ) == 0xffffff ) /* check if extended timestamp is present */
{
_timestamp = (_timestamp & 0x000000ff) + 0xffffff;
}
else
{
_timestamp >>= 8 ;
}

2) Рассчитать временную метку для файла .flv (временная метка в файле .flv всегда 32-битная, например, 0x00000100 — простая временная метка, равная 1, а 0xffffff01 — расширенная временная метка и равная 0xffffff + 0x01)

if ( ( timestamp_calc + _timestamp ) >= 0xffffff )
{
unsigned __int8 temp = _timestamp;
unsigned __int8 * ptr;

if ( (timestamp_calc + _timestamp) >= 0xffffffff ){ timestamp_calc = _timestamp; }
else
{
timestamp_calc = 0xffffff;
timestamp_calc <<= 8;
ptr = (unsigned __int8 *)&timestamp_calc;
ptr[ 0 ] = _timestamp;
}
}
else
{
timestamp_calc += _timestamp;
}
1

Другие решения

delta = timestamp - previoustimestamp;
if delta > maxtimestamp / 2 {
delta = matimestamp - previoustimestamp + time stamp;}

realtimestamp += delta;
previoustimestamp = timestamp
0

По вопросам рекламы [email protected]