软件准备
以下操作均在/usr/local/src目录进行
下载&安装nasm
编译x264时会用到
操作流程
# 下载
wget https://www.nasm.us/pub/nasm/releasebuilds/2.14/nasm-2.14.tar.gz
# 解压
tar xvf nasm-2.14.tar.gz
# 进入目录
cd nasm-2.14
# 配置
./configure
# 编译&&安装
make && make install
下载&安装x264
用于视频编码
操作流程
# 下载
git clone https://code.videolan.org/videolan/x264.git
# 进入目录
cd x264
# 配置
./configure --prefix=/usr/x264/ --includedir=/usr/local/include --libdir=/usr/local/lib --enable-shared
# 编译&&安装
make && make install
下载&安装ffmpeg
操作流程
# 下载
wget http://www.ffmpeg.org/releases/ffmpeg-4.3.1.tar.xz
# 解压
tar xvJf ffmpeg-4.3.1.tar.xz
# 进入目录
cd ffmpeg-4.3.1
#配置
./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-libx264
# 编译&&安装(这里耗时较长,20分钟+)
make && make install
配置时遇到的问题
在配置结束时,可能会出现类似提示:WARNING: using libx264 without pkg-config。
解决方案
编辑~/.bashrc文件,添加:
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
保存后使设置生效
source ~/.bashrc
然后重新执行配置命令,就不会出现WARNING的提示了。
测试ffmpeg
# 进入ffmpeg安装目录,这个目录是与ffmpeg配置时的--prefix参数对应的
cd /usr/local/ffmpeg/bin
# 执行
./ffmpeg
问题
大概率出现以下提示
./ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory
解决方案:
编辑文件:/etc/ld.so.conf,追加内容
#已有
include ld.so.conf.d/*.conf
# 追加内容
/usr/local/ffmpeg/lib
/usr/local/lib
保存后执行:
ldconfig
然后重新执行ffmpeg命令:
./ffmpeg
# 显示信息如下
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-39)
configuration: --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-libx264
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
PS: 还可将ffmpeg信息加入到环境变量,以方便使用
export PATH=/usr/local/ffmpeg/bin:$PATH
测试视频切片
- 视频文件:test.mp4
- 在同目录下新建一个hls文件夹,用于存放切片文件及m3u8文件(在执行切片转换之前必须保证目录存在,不然会转换失败)。
执行命令:
ffmpeg \
-i test.mp4 \
-hls_time 10 \
-hls_list_size 0 \
-hls_segment_filename ./hls/test_%05d.ts \
./hls/test.m3u8
参数说明:
- -i test.mp4:指定要处理的视频文件。
- -hls_time 10:指定每个切片的时间为10秒。
- -hls_list_size 0:切片列表限制,无限制。
- -hls_segment_filename ./hls/test_%05d.ts:自定义切片的文件名,这里会生成类似:test_00001.ts的视频文件。
- ./hls/test.m3u8:保存切片信息的m3u8文件
其它
ldconfig简述
- ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。
- 其通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。