这是我的ffmpeg项目的编译步骤。
$ configure --disable-static \
--enable-shared \
--enable-libmp3lame \
--prefix=/home/aszswaz/Project/opensouce/ffmpeg-lib
$ make
$ make install
这是生成的lib库。
$ ls include
libavcodec libavdevice libavfilter libavformat libavutil libswresample libswscale
$ ls lib
libavcodec.so libavdevice.so libavfilter.so libavformat.so libavutil.so libswresample.so libswscale.so pkgconfig
libavcodec.so.59 libavdevice.so.59 libavfilter.so.8 libavformat.so.59 libavutil.so.57 libswresample.so.4 libswscale.so.6
libavcodec.so.59.1.100 libavdevice.so.59.0.100 libavfilter.so.8.0.101 libavformat.so.59.2.101 libavutil.so.57.0.100 libswresample.so.4.0.100 libswscale.so.6.0.100
想实现pcm文件转mp3文件的功能,但是打开AVCodecContext时出现错误。
AVCodecContext *avCodecContext = avcodec_alloc_context3(avCodec);
if (!avCodecContext) {
fprintf(stderr, "Failed to create encoder context!\n");
return -1;
}
avCodecContext->bit_rate = 64000;
avCodecContext->channels = CHANNEL;
avCodecContext->channel_layout = AV_CH_LAYOUT_STEREO;
avCodecContext->sample_rate = OSR;
avCodecContext->sample_fmt = AV_SAMPLE_FMT_S16P;
avCodecContext->time_base = av_get_time_base_q();
result = avcodec_open2(avCodecContext, avCodec, NULL);
if (result < 0) {
fprintf(stderr, "avcodec_open2:%s\n", av_err2str(result));
return result;
}
它会输出这样的错误。
pcm_file: /home/aszswaz/Musics/demo.pcm, mp3_file: /home/aszswaz/Musics/demo.mp3
Initialize the mp3 encoder...
[libmp3lame @ 0x5590851ba880] Specified sample format -1 is invalid or not supported
avcodec_open2:Invalid argument
如何解决?