Извлечь длину видео из IDR или без IDR (H.264/AVC - организация потока битов)
1 ответ
Чтобы получить время для каждого FLVTag вы делаете:
- Сначала получите частоту кадров из SPS-файла, вам нужно проверить, что для timer_info_present_flag установлено значение 1;
хронология_инфо_представление_флаг: 1
num_units_in_tick: 1000
шкала времени: 120000
fixed_frame_rate_flag: 1
Итак, вы считаете это следующим образом:
time_scale / (2 * num_units_in_tick) = frame_rate fps;
120000 /
2 * 1000 = 60 кадров в секунду
После этого вы получите милисекунды на кадр -> 1 / 60 = 0,01666(6). Таким образом, вы подсчитываете кадры (IDR и NDR) и соответственно увеличиваете отметку времени. Для кадров SPS и PPS я сбрасываю текущую временную метку туда, где мы находимся в настоящее время.