zhao0130 wrote > I am using ffmpeg api to transcode a movie (.mp4 -> .mov). I got a warning > while calling avcodec_encode_audio2(): "[libmp3lame @ 00CAB020] frame_size > is too large". I believe this should be due to that the frame size of > decoding AVCodecContext, 1024, is different from that of encoding > AVCodecContext, 1152. The audio codec of the mp4 file is AAC and that of > the mov file is MP3. The default of frame size of MP3 seems 1152 and I can > not force it to be 1024. I set other parameters such as sample_rate, > bit_rate, sample_fmt and channels of encoding AVCodecContext same as those > of decoding AVCodecContext. Help will be really appreciated!
You need to use a FIFO for the audio samples. Each time you get samples from the decoder, push them into the FIFO. Whenever the FIFO size is at least the encoder's frame_size, pull one frame's worth of samples out of the FIFO into the encoder. There is audio FIFO code already built into ffmpeg: http://ffmpeg.org/doxygen/trunk/group__lavu__audio.html Some audio codecs like PCM have a frame_size of 0. I use 1024 samples for those. -- View this message in context: http://libav-users.943685.n4.nabble.com/Libav-user-warning-of-libmp3lame-00CAB020-frame-size-is-too-large-while-calling-avcodec-encode-audio-tp4655745p4655749.html Sent from the libav-users mailing list archive at Nabble.com. _______________________________________________ Libav-user mailing list Libav-user@ffmpeg.org http://ffmpeg.org/mailman/listinfo/libav-user