linux 编译安装ffmpeg

1 下载、解压、配置

#下载最新安装包
wget http://www.ffmpeg.org/releases/ffmpeg-4.4.tar.gz
tar -zxvf ffmpeg-4.4.tar.gz
cd ffmpeg-4.4
# 指定安装目录
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-shared --enable-static   --enable-libx264 --enable-gpl --enable-pthreads

问题1

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.
缺少汇编器,安装:

sudo yum install nasm yasm -y

问题2

not find libx264

为了支持高分辨需要案组昂libx264
安装参考:https://blog.csdn.net/A199222/article/details/84142894

问题3

Programs:
ffmpeg ffplay ffprobe

如果没有ffplay,说明机器缺少SDL2

sudo yum install SDL2 -y
sudo yum install SDL2-devel -y

问题4

WARNING: using libx264 without pkg-config

# 设置环境变量
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/

问题5

字幕组件不存在
ERROR: fontconfig not found using pkg-config

sudo yum install fontconfig
sudo yum install fontconfig-devel

2 编译安装

make -j4 && sudo make install

3 设置环境变量

export PATH=$PATH:/usr/local/ffmpeg

4 试一试

#录制桌面
ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
#录制桌面和音频
#使用alsa设备,不同pc,根据选择对应设备即可
ffmpeg -video_size 1024x768 -framerate 25 -f x11grab -i :0.0+100,200 -f alsa -ac 2 -i hw:0 output.mkv

参数

-vide_size 1280x1024 //显示器的分辨率
-framerate 24 //帧率
-i $DISPLAY //输入源 变量DISPLAY 是X11的:0.0,可以指定XY设定抓取坐标:0.0+10,20
-f x11grab //format

问题1

ffmpeg: error while loading shared libraries: libavdevice.so.58
ffmpeg: error while loading shared libraries: libx264.so.164: cannot open shared object file: No such file or directory

原因是找不到ffmpeg的动态库,需要手动设定

cd /etc/ld.so.conf.d
sudo touch ffmpeg-x86_64.conf
打开文件写入/usr/local/ffmpeg/lib/
sudo ldconfig

所以此类缺少动态库的问题都是如此解决

问题2

Unknown input format: ‘alsa’
原因是linux内核alsa驱动已经安装了,但是上层的api工具没有安装,所以此时linux也是无法播放音频。需要安装

sudo yum install alsa-lib alsa-lib-devel alsa-utils

其他

# --extra-cflags="-fPIC" 解决LD so时报错
# relocation R_X86_64_32 against `.rodata‘ can not be used when making a shared object;
#不建议开启enable-shared
export CXXFLAGS="$CXXFLAGS -fPIC"
./configure --prefix=/usr/local/ffmpeg --enable-libx264 --enable-gpl 

参考官网ffmpeg 文档
遇到各种坑,参考这里
参考fmpeg: error while loading shared libraries: libavdevice.so.58


版权声明:本文为my_live_123原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。