ffmpegのavformat_find_stream_info関数の詳細説明

avformat_find_stream_info() 関数は、デコーダ タイプ、サンプリング レート、チャネル数、ビット レート、キー フレーム、その他の情報を含む、メディア ファイル内の各オーディオ ストリームとビデオ ストリームの詳細情報を取得するために使用されます。この関数は libavformat/avformat.h で定義されています。
関数のプロトタイプは次のとおりです。

int avformat_find_stream_info(AVFormatContext *fmt_ctx, AVDictionary **options);

この関数のパラメータは次の意味を持ちます。

fmt_ctx: AVFormatContext 構造体ポインター。メディア ファイルのフォーマット コンテキストを示します。これには、開かれたメディア ファイルの情報と、メディア ファイル内の各オーディオおよびビデオ ストリームの情報が含まれます。
options: AVDictionary 構造体ポインター。オプションを渡すために使用されます。現在は使用されていません。NULL を渡すだけです。

avformatfindstream_info() 関数を使用してメディア ファイル内のオーディオおよびビデオ ストリーム情報を取得する方法を示す簡単なコード例を以下に示します。

#include <libavformat/avformat.h>

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

    int ret = avformat_open_input(&fmt_ctx, "example.mp4", NULL, NULL);
    if (ret < 0) {
    
    
        av_log(NULL, AV_LOG_ERROR, "Cannot open input file\n");
        return -1;
    }

    ret = avformat_find_stream_info(fmt_ctx, NULL);
    if (ret < 0) {
    
    
        av_log(NULL, AV_LOG_ERROR, "Cannot find stream information\n");
        avformat_close_input(&fmt_ctx);
        return -1;
    }

    av_dump_format(fmt_ctx, 0, "example.mp4", 0);
    avformat_close_input(&fmt_ctx);

    return 0;
}

上記のサンプル コードでは、まず MP4 形式のファイルを開き、ファイルが正常に開かれたかどうかを確認します。次に、avformatfindstream_info を呼び出して、メディア ファイル内の各オーディオ ストリームとビデオ ストリームの詳細情報を取得します。情報の取得に失敗した場合、プログラムはエラー メッセージを出力し、ファイルを閉じる前に AVFormatContext 構造体の領域を解放します。
最後に、avdumpformat 関数を呼び出して、取得したメディア ストリーム情報をフォーマットして、観察とデバッグのために標準出力に出力します。最後に、ファイルを閉じて、AVFormatContext 構造のスペースを解放します。

おすすめ

転載: blog.csdn.net/qq_51282224/article/details/130993130