c - ffmpeg lib报错指定样本格式-1无效或不支持
问题描述
这是我的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
如何解决?
解决方案
推荐阅读
- angular - 在angular+ spring boot中上传50MB文件的最佳实践是什么
- php - 将 Composer 客户端库添加到 PHP 容器
- reactjs - TypeScript 没有选择重载
- excel - Excel Solver - 限制变量数
- blazor-webassembly - 带有 Enter 按钮的 Blazor InputText 触发函数
- python-3.x - 如何在类中使用 Python 的 websockets 和 asyncio 以及现有的事件循环
- matlab - Matlab:如何将“日期时间”数据导出到外部文件?“使用 fprintf 时出错。没有为‘单元’输入定义函数。”
- oracle - 如何在 SQL plus 中的列值之前修剪尾随空格
- amazon-web-services - 挂载S3桶系统后目录日期显示为1970
- angular - Angular 应用程序在更改时停止重新加载