我在ffmpeg 3.1.6中使用libopus 1.1.4从avcodec_open2
获得了无效的选项结果。我已经对所有选项进行了排序,但找不到有问题的选项I created a gist holding the relevant native code。我搜索了所有有关互联网的内容,但至今还没有找到任何有用的信息。我也尝试过使用和不使用opts词典。
results = avcodec_open2(context, codec, &opts);
和results = avcodec_open2(context, codec, 0);
所有测试和变化返回-22(在第51行第57页)
答案 0 :(得分:1)
memset(context, 0, sizeof(context));
需要删除该代码。它基本上会破坏一切。具体来说,它将根据avcodec_alloc_context3()
参数取消设置codec
中设置的所有内容,以及更常见的所有与编解码器无关的默认值。
(请注意,它仅将前8个(在x86-64上)字节归零,因为您使用了sizeof(context)
而不是sizeof(*context)
。)