如何在libav中跟踪错误消息

时间:2013-10-25 09:44:17

标签: libavcodec libav

我正在编写一个简单的程序,使用libav将任何输入音频文件解码为pcm16 / mono / wav文件。或者,我认为这很简单。

经过艰苦的努力,阅读了很多示例代码(比如avconv / avplay),我设法编写了应该有用的代码。

然而,它不起作用。解复用/解码部分似乎工作正常,但编码部分失败,出现以下消息:

mathematics.c:61: av_rescale_rnd: Assertion `c > 0' failed.

以下是代码提取:

printf("Fill Frame\n");
avcodec_fill_audio_frame(oframe, _oCodecCtx->channels, _oCodecCtx->sample_fmt, frame->data[0], frame->linesize[0], 0);
printf("Frame filled\n");
ret = avcodec_encode_audio2(_oCodecCtx, &opkt, oframe, &got_packet);
if (ret < 0) {
   printf("Error encoding audio frame\n");
   return 1;
}

“填充帧”和“填充帧”在错误出现之前显示。所以,我认为它是由avcodec_encode_audio2抛出的。但是,此函数不会在其源代码中调用av_rescale_rnd

所以问题是:有没有办法知道谁调用了这个函数,而没有修改/重新编译libav源代码?

0 个答案:

没有答案