我刚刚开始学习 VP8,所以如果这是一个愚蠢的问题,请给我一些松懈。
H.264 示例
过去,我主要使用 H.264。每当我需要解析 H.264 比特流时,我会利用 libav 来帮助我并使用类似的东西
av_register_all();
_ioContext = avio_alloc_context(
encodedData,
H264_READER_BUF_SIZE,
0,
0,
&readFunction,
NULL,
NULL);
if (_ioContext == NULL)
throw std::exception("Unable to create AV IO Context");
AVInputFormat *h264Format = av_find_input_format("h264");
if (h264Format == NULL) {
throw std::exception("Unable to find H264 Format");
}
_context = avformat_alloc_context();
_context->pb = _ioContext;
ret = avformat_open_input(&_context,
"",
h264Format,
NULL);
if (ret != 0) {
throw std::exception(
"Failed to open input file :" +
std::string(_avErrToString(ret)));
}
VP8
上述方法非常适合解析 H.264 比特流并为我提供 H.264 帧以馈送到我自己的解码基础设施。
我正在尝试用 VP8 重复同样的工作。我尝试使用此代码作为基础,而不是寻找“h264”格式,而是尝试了“vp8”和“webm”。“vp8”似乎无效,但“webm”能够加载格式。但是,当我到达 avformat_open_input 时,出现此错误:
[matroska,webm @ 0x101812400] 未知条目 0xF0
[matroska,webm @ 0x101812400] EBML 标头使用不支持的功能
(EBML 版本 0,doctype(null),doc 版本 0)
无法打开输入文件:尚未在 FFmpeg 中实现,欢迎使用补丁
我看不下去了吗?还是我只是错误地接近这个?