マイクから取得するステレオ設定の16ビットPCMデータがあります。ハーフデータC++とFFMPEGを生成するオーディオMP2エンコードとデコード
私はエンコードデータを取得したら、それは私がエンコーダにオーディオデータを渡すとき、私はそれをするたびにデータの4608のバイトを取り、MP2にそれを正しくエンコードしていることがわかり
AVCodec* audio_codec = avcodec_find_encoder(AV_CODEC_ID_MP2);
AVCodecContext* audio_codec_ctx = avcodec_alloc_context3(audio_codec);
audio_codec_ctx->bit_rate = 64000;
audio_codec_ctx->channels = 2;
audio_codec_ctx->channel_layout = AV_CH_LAYOUT_STEREO;
audio_codec_ctx->sample_rate = 44100;
audio_codec_ctx->sample_fmt = AV_SAMPLE_FMT_S16;
次のエンコーダの設定を使用してデータ。マイクロホンで捕捉されたPCMデータは88320バイトで、エンコーダは毎回4608バイトを取り込んで圧縮します。私は符号化された各4608バイトのセクションを取得し、上記しかしデコーダと同じ設定で、デコーダを介してそれを渡す場合
。
AVCodecID audio_codec_id = AV_CODEC_ID_MP2;
AVCodec * audio_decodec = avcodec_find_decoder(audio_codec_id);
audio_decodecContext = avcodec_alloc_context3(audio_decodec);
audio_decodecContext->bit_rate = 64000;
audio_decodecContext->channels = 2;
audio_decodecContext->channel_layout = AV_CH_LAYOUT_STEREO;
audio_decodecContext->sample_rate = 44100;
audio_decodecContext->sample_fmt = AV_SAMPLE_FMT_S16;
デコード機能し、成功しているが、私は、データのサイズを見たとき、それがコード化されたもののちょうど半分2034年です。なぜそうなるのか分かりません。私は、エンコーダとデコーダが同じであると考えると4608になると思います。
誰もがなぜこのようなことが起きているのかを明らかにすることはできますか?私は何を設定する必要がありますか?