FFMPEG nie może wyświetlić czasu trwania wideo

Próbuję użyć ffmpeg do przechwytywania klatek z pliku wideo, ale nie mogę nawet uzyskać czasu trwania wideo. za każdym razem, gdy próbuję uzyskać do niego dostęppFormatCtx->duration Dostaję 0. Wiem, że wskaźnik został zainicjowany i zawiera poprawny czas trwania, ponieważ jeśli go użyjęav_dump_format(pFormatCtx, 0, videoName, 0); wtedy faktycznie otrzymuję dane czasu trwania wraz z innymi informacjami o filmie. Oto, co otrzymuję, gdy używamav_dump_format(pFormatCtx, 0, videoName, 0);:

Wpisz # 0, avi, z „futurama.avi”:

Czas trwania: 00: 21: 36,28, początek: 0,000000, szybkość transmisji: 1135 kb / s

Strumień # 0.0: Wideo: mpeg4 (Advanced Simple Profile), yuv420p, 512x384

[PAR 1: 1 DAR 4: 3], 25 tbr, 25 tbn, 25 tbc

Strumień # 0.1: Audio: ac3, 48000 Hz, stereo, s16, 192 kb / s

Nie rozumiem dlaczegoav_dum_format może wyświetlać czas trwania i nie mogę. Sprawdziłem definicję funkcji, aby wyświetlić czas trwania, funkcja używa także czasu trwania pFormatCtx->. Nie chodzi tylko o czas trwania innych zmiennych składowych, które nie wyświetlają właściwych danych, gdy wywołam je w main.cpp

Oto mój main.cpp:

extern "C" {
    #include<libavcodec/avcodec.h>
    #include<libavformat/avformat.h>
    #include<libswscale/swscale.h>
}


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;
}

Nie wiem, czy to pomaga, ale używam QtCreator na Ubuntu i statycznie łączę biblioteki.

Dziękuję za pomoc.

questionAnswers(3)

yourAnswerToTheQuestion