#c #ffmpeg
Вопрос:
Это этапы компиляции моего проекта 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:%sn", av_err2str(result));
return resu<
}
t он выводит такую ошибку.
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
Как это можно решить?