1

libavを使用して、入力オーディオファイルをpcm16/mono/wavファイルにデコードする簡単なプログラムを作成しています。というか、単純だったと思います。

苦労してたくさんのサンプル コード (avconv/avplay など) を読んだ後、動作するコードを作成することができました。

しかし、それは機能していません。demuxing/decoding 部分は正常に動作しているように見えますが、encoding 部分は次のメッセージで失敗しました:

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;
}

エラーが表示される前に「Fill Frame」と「Frame Filled」が表示されます。だから、私はそれがによってスローされたと思いますavcodec_encode_audio2av_rescale_rndただし、この関数はソース コードを呼び出しません。

ここで質問です: libav ソースコードを変更/再コンパイルせずに、誰がこの関数を呼び出したかを知る方法はありますか?

4

0 に答える 0