libav音频编码从原始pcm到OGG Vorbis的例子
Example of libav audio encoding from raw pcm to OGG Vorbis
我目前正在开发一种工具,可以将多种专有格式的游戏媒体资产转换为更开放的格式。我试图使用libav库http://libav.org/从WAV,mp3等格式解码为原始pcm std::vector<char>
(成功完成),然后将其编码为ogg vorbis。我正试图在文档中使用api-example.c
。https://github.com/FFmpeg/FFmpeg/blob/master/doc/examples/decoding_encoding.c但是没有什么进展,因为我被困在哪里的音调生成结束和AVPacket编码开始。
是否有人指出我从原始pcm文件(或std::vector
)写入文件(最好是ogg vorbis)的音频编码的工作示例?
在使用libav:
编码音频时需要记住的几件事解码帧的pcm样本格式是什么?AV_SAMPLE_FMT_S16, AV_SAMPLE_FMT_FLTP等)
解码帧中每个通道有多少采样。
每个音频编码器只采用一种特定类型的样本格式,所以如果pcm样本格式与编码器的样本格式不相同,则必须进行样本格式转换。
每个音频编码器采用一个特定的no。帧中每个通道的采样。
。MP3每个通道需要1152个采样,aac-main/lc每个通道需要1024个采样。aac-每个通道需要2048个采样。所以你需要做一些缓冲来提供预期的no。
为了进行示例格式转换,我建议您使用Swr_convert API