1

私はGNU/Linux上のCでビデオサーバーを開発しており、ffmpegを使用して各ビデオファイルのデータを管理しています。それで、私はファイルを開き、そのコンテナーに関するすべての情報を取得し、次にそのコーデックで同じことを行い、フレームを1つずつ読み取り始めます。

残念ながら、ffmpeg、より正確にはavcodecは十分に文書化されていません。レコードを維持するために、フレームがI-FrameまたはB-Frameのどちらであるかを知る必要がありますが、どうすればよいですか?

前もって感謝します。

4

2 に答える 2

1

画像の種類は、のpict_typeフィールドで指定されますstruct AVFrame。FFMPEGで定義されている4つのタイプがあります。Iフレームに対してにpict_type設定されます。FF_I_TYPE

たとえば、デバッグメッセージに設定する文字を与えるデバッグコードの一部:

/* _avframe is struct AVFrame* */

switch(_avframe->pict_type)
{
    case FF_I_TYPE:
        return "I";
        break;
    case FF_P_TYPE:
        return "P";
        break;
    case FF_S_TYPE:
        return "S";
        break;
    case FF_B_TYPE:
        return "B";
        break;

}
于 2009-10-01T18:51:33.180 に答える
0

マヌエル、

FFプローブはもう試しましたか?これは、各フレームのタイプを確認できるマルチメディアストリームアナライザーです。あなたはSourceForget.netからそれをダウンロードすることができます。それをコンパイルするには、Gnu autoconf、Cコンパイラ、およびFFmpegの動作するインストールが必要です。それが役に立ったら教えてください。

于 2009-09-25T19:25:12.150 に答える