问题: FFMPEG系列六:linux ffmpeg Unknown encoder 'libx264'解决办法:安装第三方x264和mp3lame编码器|ffmpeg编码解码|在线助手-您的在线生成制作工具箱!
问题关键字: ffmpeg,ffmpeg编码解码,ffmpeg编译安装,FFMPEG常见错误,FFMPEG编码器,在线生成制作工具,在线助手!
问题详细描述: FFMPEG系列六:linux ffmpeg Unknown encoder 'libx264'解决办法:安装第三方x264和mp3lame编码器是在线助手博客-您的在线生成制作工具箱,系列文章之一,主要记录了linux下ffmpeg编译、编码解码常见报错问题。!
二三九九
FFMPEG系列六:linux ffmpeg Unknown encoder 'libx264'解决办法:安装第三方x264和mp3lame编码器
在线助手博客首页
###Hello world!
####一、执行将gif转换为mp4并指定libx264编码的时候报错Unknown encoder 'libx264',详细信息如下 ``` [csy@root@instance-m4tjyg0q gif2video]# ffmpeg -f gif -i test.gif -vcodec libx264 test.mp4 ffmpeg version N-91345-gb86c575 Copyright (c) 2000-2018 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-28) configuration: --enable-shared --prefix=/usr/local/ffmpeg/installlocation libavutil 56. 18.102 / 56. 18.102 libavcodec 58. 20.103 / 58. 20.103 libavformat 58. 17.101 / 58. 17.101 libavdevice 58. 4.101 / 58. 4.101 libavfilter 7. 25.100 / 7. 25.100 libswscale 5. 2.100 / 5. 2.100 libswresample 3. 2.100 / 3. 2.100 Input #0, gif, from 'test.gif': Duration: N/A, bitrate: N/A Stream #0:0: Video: gif, bgra, 200x200, 25 fps, 25 tbr, 100 tbn, 100 tbc Unknown encoder 'libx264' ``` ####二、原因:ffmpeg自身不带的xxx编码类型 **安装好了ffmpeg后,如果使用ffmpeg命令去把某个视频文件转成h264视频编码、mp3音频编码或者其他ffmpeg自身不带的xxx编码类型,就会看到报错信息,unknown encoder 'xxx'。此刻你需要的只要去安装其他的编码器就行了。** ####三、x264编码器安装 **3.1下载x264工程代码** 先命令行切换到`/usr/local/ffmpeg/encoderLib`或者其它指定目录。执行`git clone git://git.videolan.org/x264.git`,**执行之后会看到该目录下多出了一个x264文件夹。** ![图片.png](https://upload-images.jianshu.io/upload_images/2704327-3dd7e650dd222b7e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) **3.2编译安装x264** ```java cd `/usr/local/ffmpeg/encoderLib/x264 ./configure --enable-shared --enable-static ``` 执行之后报错: ```java Found no assembler Minimum version is nasm-2.13 If you really want to compile without asm, configure with --disable-asm. ``` 提示没有安装nasm包,当然也可以在./configure --disable-asm,最好将nasm包安装起来,因为不知道对后续有什么影响。 地址:http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz **linux下使用wget -P /root 网址下载上述文件到指定目录/usr/local/ffmpeg/encoderLib/nasm** `wget -P /usr/local/ffmpeg/encoderLib/nasm http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.xz` **下载之后解压** ```java cd .. cd nasm tar xvJf nasm-2.13.01.tar.xz ``` **解压之后编译安装** ```java cd /usr/local/ffmpeg/encoderLib/nasm/nasm-2.13.01 ./configure make && make install ``` **编译安装之后回到3.2编译安装x264** ```java cd /usr/local/ffmpeg/encoderLib/x264 ./configure --enable-shared --enable-static make && make install ``` **我们在./configure的时候没有指定前缀--prefix=/usr,这样,libx264.so和libx264.a就会复制到/usr/local/lib下去,记住这里,等下会因为这里要做一些修改。** ####四、mp3lame编码器安装 **4.1安装方法和上面3.2nasm安装一样,先下载mp3lame的工程代码,http://sourceforge.net/projects/lame/files/lame/** `wget -P /usr/local/ffmpeg/encoderLib/lame https://jaist.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz` **这里需要注意:网上说的都是https://jaist.dl.sourceforge.net/project/lame/lame/后面没有指定具体文件信息是下载不了的** **4.2下载之后解压(注意是解压tar.gz和之前tar.xz不一样)** ```java cd /usr/local/ffmpeg/encoderLib/lame tar -zxvf lame-3.100.tar.gz ``` **4.3解压之后编译安装** ```java cd /usr/local/ffmpeg/encoderLib/lame/lame-3.100 ./configure --enable-shared --enable-static make && make install ``` **这次我们又没有指定--prefix-/usr,所以mp3lame的libmp3lame.so和libmp3lame.a就被赋值到了/usr/local/lib下** ####五、重新编译ffmpeg **5.1.进入ffmpeg目录,执行下面命令** ```java cd /usr/local/ffmpeg/ffmpeg-4.0-git/ffmpeg ./configure --enable-gpl --enable-libx264 --enable-libmp3lame make clean && make install ``` **5.2.这样ffmpeg就被重新编译了,完了就可以验证一下,使用ffmpeg工具,把某个视频文件中的视频流转码成h264格式,音频流转码成mp3lame格式,不妨试试。** ```java ffmpeg -f gif -i test.gif -vcodec libx264 test.mp4 ``` 报错 ```java ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory ``` **4.类似于“libxxx.so找不到”的错误提示,解决办法如下:** 解决办法:详见:[FFMPEG常见错误 一:ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory](https://www.it399.com/blog/ffmpeg/201807011707) >注意:不指定prefix,则可执行文件默认放在/usr /local/[bin](https://www.baidu.com/s?wd=bin&tn=SE_PcZhidaonwhc_ngpagmjz&rsv_dl=gh_pc_zhidao),库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc。其它的资源文件放在/usr /local/share。 这次因为我们在安装ffmpeg的时候没有指定prefix,那么ffmpeg安装的路径就是上面的那样。如果安装的时候想要指定目录/usr/local/ffmpeg,可以`./configure --enable-gpl --enable-libx264 --enable-libmp3lame --prefix=/usr/local/ffmpeg`
返回顶部
下载Android客户端
Copyright © 2017-2018 . All Rights Reserved.
粤ICP备18008506号