ffmpeg を使用して特定のビデオ ファイルを読み込もうとしていますが、少し問題が発生しました。
これは、読み取りを開始するコードです。
int _tmain(int argc, _TCHAR* argv[])
{
if (argc < 2)
{
fprintf( stderr, "Filename is needed as an argument\n" );
return 1;
}
/* register all formats and codecs */
av_register_all();
AVFormatContext* fmt_ctx = NULL;
/* open input file, and allocate format context */
const char *src_filename = argv[1];
if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {
fprintf(stderr, "Could not open source file %s\n", src_filename);
abort();
}
/* retrieve stream information */
AVDictionary * options;
int res = avformat_find_stream_info(fmt_ctx, &options);
if (res < 0) {
fprintf(stderr, "Could not find stream information\n");
abort();
}
...
}
次のメッセージが一貫して表示されます。
[avi @ 005f2fe0] ストリーム 0 のコーデック パラメータが見つかりませんでした (ビデオ: なし (GREY / 0x59455247)、1280x1024): 不明なコーデック
'analyzeduration' および 'probesize' オプションの値を増やすことを検討してください
同じファイルに対して ffmpeg ツールを実行すると、同じメッセージが表示されます。
ただし、ビデオ ストリームの内容 (YUV8 形式の生のビデオ データ) は知っています。実際、それをオプションでffmpegに渡すと-c:v rawvideo
問題ありません。再コーディング、変換など - ffmpeg は魔法のツールのようにそれを行います。
さて、問題は、ffmpeg api を使用する場合、そのオプションに相当するものは何ですか? ファイルのフレームにアクセスする必要があります。