C++ ffmpeg-使用音频样本填充音频帧

C++ ffmpeg-使用音频样本填充音频帧,c++,audio,ffmpeg,encoder,C++,Audio,Ffmpeg,Encoder,我正在尝试将音频流编码为文件。我正在接收音频缓冲区并使用avcodec\u fill\u audio\u frame创建AVFrame,然后将其发送到avcodec\u encode\u audio2(中间还有一些其他东西-我使用ffmpeg muxing.c作为示例) 问题是:我得到的音频缓冲区包含480个样本,我使用的编解码器的帧大小为1152(MP2)。结果是输出的音频文件有点“被切碎”。听起来每个音频帧最后都有一些无声的样本 我怎样才能解决这个问题? 谢谢 在将帧传递到avcodec\u

我正在尝试将音频流编码为文件。我正在接收音频缓冲区并使用
avcodec\u fill\u audio\u frame
创建
AVFrame
,然后将其发送到
avcodec\u encode\u audio2
(中间还有一些其他东西-我使用ffmpeg muxing.c作为示例)

问题是:我得到的音频缓冲区包含480个样本,我使用的编解码器的
帧大小为1152(MP2)。结果是输出的音频文件有点“被切碎”。听起来每个音频帧最后都有一些无声的样本

我怎样才能解决这个问题?
谢谢

在将帧传递到
avcodec\u encode\u audio2
之前,您必须在
AVFrame
中填充最多
frame\u size
(本例中为1152)个样本


听起来你的框架太小了。你是怎么设置的?你能展示一些代码吗?

我从javascript WebRTC收到它,并使用Google的本地客户端对其进行编码。在C++方面,我使用PP::MediaStreamAudioTrack()来处理流。然后我可以获取缓冲区并对其进行配置。这些是我可以配置的字段:PP_MEDIASTREAMAUDIOTRACK_ATTRIB_缓冲区、PP_MEDIASTREAMAUDIOTRACK_ATTRIB_采样率、PP_MEDIASTREAMAUDIOTRACK_ATTRIB_采样大小、PP_MEDIASTREAMAUDIOTRACK_ATTRIB_频道、PP_MEDIASTREAMAUDIOTRACK_ATTRIB_持续时间。您需要更多信息吗?我是否应该创建一个中间缓冲区来填充它,直到它达到1152,然后才将它发送到编码器?如果是这样,我如何创建和填充这个中间缓冲区?谢谢:)