我正在使用此命令进行转换 flv to 3gp
ffmpeg -y -i in.flv -ar 8000 -b:a 12.20k -ac 1 -s 176x144 out.3gp
并且它给出了这个错误
Encoder (codec amr_nb) not found for output stream #0:1
我已经搜索过amr_nb
包yum
但无法找到它.
我在CentOS 7上
ffmpeg -version ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-nonfree --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect libavutil 54. 20.100 / 54. 20.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 25.101 / 56. 25.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100
我不确定缺少什么.
编辑:
我按照本指南https://s3bubble.com/installing-ffmpeg-on-centos-6-6-in-usrlocalbin/ + alijandro的建议.
系统中安装的ffmpeg不支持编码器amr-nb
,编码器是3gp
格式的默认编码器.
看看您是否可以在编码器列表中找到
$ ffmpeg -encoders |grep amr_nb
你可以试试
使用h263/aac作为输出编码器,添加选项 -vcodec h263 -acodec aac
或者在amr-nb
支持下构建ffmpeg
从这里获取opencore源代码https://sourceforge.net/projects/opencore-amr
编译源代码并安装到 /path/to/opencore-amr
得到ffmpeg的来源
使用选项配置ffmpeg
$./configure --enable-libopencore-amrnb \ --enable-libopencore-amrwb \ --enable-version3 \ ... --extra-cflags="-I/path/to/opencore-amr/include" \ --extra-ldflags="-L/path/to/opencore-amr/lib" ... # more configure options
编译并安装ffmpeg,然后你的命令就可以了