Валиден ли такой декодируемый AVStream?

Я наткнулся на такой медиаконтейнер, в котором dts AVPacket и AVFrame всегда равен порядковому номеру кадра в потоке, а сам AVStream (после avformat_find_stream_info) имеет вот такую мету:

Video Stream Info:
    codecpar->codec_type: 0
    codecpar->codec_id:   12
    index:                0
    id:                   0
    time_base.num:        104271
    time_base.den:        2500000
    start_time:           0
    duration:             252848
    nb_frames:            252848
    discard:              252848
    avg_frame_rate.num:   2500000
    avg_frame_rate.den:   104271

Обратите внимание на duration, nb_frames и discard. Последний однозначно точно является какой-то непонятной ошибкой, потому что enum AVDiscard не имеет enumerator'а с таким значением.

Проблема в том, что я не знаю как обрабатывать такую ситуацию, ведь плеер видос воспроизводит нормально, даже если он невалидный. Мне кажется, что тут автор этого контейнера просто накосячил.

У кого есть опыт работы с этим, подскажите, сталкивались вы с таким, и, если да, то что с этим делали?

В принципе есть мысль, чтобы взять средний FPS и сравнить количество кадров с продолжительностью, учтя при этом какую-то погрешность, чтобы определить невалидность этой меты. Но боюсь это будет костылём, который может создать дополнительные неочевидные проблемы.


Ответы (0 шт):