我正在尝试使用 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 格式的原始视频数据。事实上,当我通过-c:v rawvideo
选项将它传递给 ffmpeg 时,没有问题。重新编码、转换等 - ffmpeg 就像它的神奇工具一样。
现在,问题是:当使用 ffmpeg api 时,该选项的等价物是什么?我迫切需要访问文件的框架。