娃哈哈好喝-真的!
技术够用就行,吃好喝好睡好!

Linux安装ffmpeg+x264

m3u8就不做过多介绍了,在linux系统中可以借助ffmpeg这个工具将视频转化为m3u8格式,便于在终端播放。本次测试环境是centos7.6

第一步,得先安装yasm

yum install yasm

如果yum没有yasm这个包需要手动去下载一个源码包来安装,源码包编译安装使用默认方式即可,不需要修改任何配置。

第二步,安装x264 X264源码包下载地址:http://www.videolan.org/developers/x264.html

tar -xjf x264-master.tar.bz2
./configure --prefix=/usr/local/x264 --enable-shared --enable-static --disable-asm
make
make install

第三步,安装ffmpeg ffmpeg源码包下载地址: http://ffmpeg.org/download.html

tar -xjf ffmpeg-snapshot.tar.bz2
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-yasm --enable-libx264 --enable-gpl --enable-pthreads --extra-cflags=-I/usr/local/x264/include --extra-ldflags=-L/usr/local/x264/lib
make
make install

第四步,添加链接库文件和环境变量 vim /etc/ld.so.conf,添加下面两个目录:

/usr/local/ffmpeg/lib/
/usr/local/x264/lib/

然后保存退出,执行ldconfig让变更生效

vim /etc/profile,添加下面一行:

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

保存退出,执行source /etc/profile

安装完毕,查看一下安装的软件版本号:

ffmpeg -version

如果遇到centos8.2系统安装后报错:

[h264_v4l2m2m @ 0x243b3c0] Could not find a valid device
[h264_v4l2m2m @ 0x243b3c0] can't configure encoder
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
[aac @ 0x2455b80] Qavg: 31463.275
[aac @ 0x2455b80] 2 frames left in the queue on closing
Conversion failed!

这个错误初步判断是系统缺少组件导致,具体缺什么不清楚,但这里提供一个很好的解决方案:

https://johnvansickle.com/ffmpeg/

下载后解压得到这样的文件目录:

[root@dx-test-root ffmpeg-git-20201128-amd64-static]# ls
ffmpeg ffprobe GPLv3.txt manpages model qt-faststart readme.txt
[root@dx-test-root ffmpeg-git-20201128-amd64-static]#

这里的ffmpeg是可以直接使用的,不需要再去安装ffmpeg源码包了,是不是很方便。

第五步,使用方法及参数说明 将视频转换成m3u8:

[root@nginx mv]# ffmpeg -i td01.mkv -f hls td01hls.m3u8

默认情况下这条命令是将td01.mkv这个视频文件按照每2秒一个片段来分割成m3u8格式,并且td01hls.m3u8文件中只保存最后5个片段,我们可以用加参数的方式来控制它的分割时间长度和m3u8文件保存的片段数,可加参数如下:

-hls_time n: 设置每片的长度,默认值为2。单位为秒

-hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5

-hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的 片,而且能够限制写入磁盘的最多的片的数量

-hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

注意:播放列表的sequence number 对每个segment来说都必须是唯一的,而且它不能和片的文件名(当使用wrap选项时,文件名有可能会重复使用)混淆

例如:将一个视频文件按照2分钟的时间来分割,并且记录所有片段:

[root@nginx mv]# ffmpeg -i td01.mkv -hls_time 120 -hls_list_size 0 -f hls td01hls.m3u8

转换完成的视频文件可以直接在html文件中打开,但是有终端限制,不使用插件的情况下只能在苹果设备和安卓手机端中打开,windows电脑无法打开,解决方法使用第三方播放插件,比如:

https://videojs.com/getting-started

这是js播放插件,如果客户端禁用了js也无法正常播放。

赞(0)
未经允许不得转载:娃哈哈好喝 » Linux安装ffmpeg+x264
分享到: 更多 (0)