FFMPEG не может отобразить продолжительность видео

я пытаюсь использовать ffmpeg для захвата кадров из видеофайла, но я не могуt даже получить продолжительность видео. каждый раз, когда я пытаюсь получить к нему доступpFormatCtx->durationм получение 0. Я знаю, указатель инициализирован и содержит правильную продолжительность, потому что, если я используюav_dump_format(pFormatCtx, 0, videoName, 0); тогда я фактически получаю данные о продолжительности вместе с другой информацией о видео. Вот что я получаю, когда использую:av_dump_format(pFormatCtx, 0, videoName, 0);

Вход № 0, avi, от 'futurama.avi ':

Длительность: 00: 21: 36,28, старт: 0,000000, битрейт: 1135 кбит / с

Поток № 0.0: видео: mpeg4 (расширенный простой профиль), yuv420p, 512x384

[PAR 1: 1 DAR 4: 3], 25 тонн в год, 25 тонн в год, 25 тонн в год

Поток # 0.1: Аудио: ac3, 48000 Гц, стерео, s16, 192 кбит / с

Я нене понимаю почемуav_dum_format может отображать продолжительность, а я могут. Я проверил определение функции, чтобы отобразить продолжительность, функция также использует pFormatCtx->продолжительность. Это'не только продолжительность других переменных членов также нене отображать правильные данные, когда я вызываю их в main.cpp

Вот's мой main.cpp:

extern "C" {
    #include
    #include
    #include
}


int main(int argc, char *argv[]) {
    AVFormatContext *pFormatCtx = NULL;

    const char videoName[] = "futurama.avi";

    // Register all formats and codecs.
    av_register_all();
    cout < "Opening the video file";
    // Open video file
    int ret = avformat_open_input(&pFormatCtx, videoName, NULL, NULL) != 0;
    if (ret != 0) {
        cout < "Couldn't open the video file." < ret ;
        return -1;
    }
    if(avformat_find_stream_info(pFormatCtx, 0) < 0) {
        cout < "problem with stream info";
        return -1;
    }

    av_dump_format(pFormatCtx, 0, videoName, 0);
    cout < pFormatCtx->bit_rate < endl; // different value each time, not initialized properly.
    cout < pFormatCtx->duration < endl; // 0
    return 0;
}

Ответы на вопрос(3)

Ваш ответ на вопрос