使用ffmpeg转码m3u8并播放
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ffmpeg转码m3u8并播放相关的知识,希望对你有一定的参考价值。
之前把一个MP4文件入在云服务器,尝试访问,结果只能下载,不能访问,主要还是想的太简单了,鼓捣了一段时间后也没去想了。后来发现很多视频网站上的文件源都是M3U8格式的,也没去深入研究。
今天心血来潮又研究了一下,发现还是挺简单的。可以使用ffmpeg工具将mp4格式的视频切片再生成 m3u8视频流。
m3u8简介:
m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势
接下来就开始做实验了:
1、首先需要一个视频文件,我从网上下载了个种子文件,利用FTP上传到服务器中,再使用种子下载工具将视频下载下来
种子下载工具:tget,tget是一个简单的命令行BT下载工具,可以用于BT种子和磁力链接的下载,tget源代码: https://github.com/jeffjose/tget
yum install npm -y #NPM(node package manager),通常称为node包管理器。顾名思义,它的主要功能就是管理node包,包括:安装、卸载、更新、查看、搜索、发布等,相当于yum了,安装这个主要是为下载tget
npm install -g t-get #安装tget
tget 种子文件名
接下来就等视频下载完毕了
2、视频下载完成,开始安装ffmpeg
首先安装额外的库,不然一些功能用不了。我这里就安装了音频和视频库
#音频
wget https://nchc.dl.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz #音频库
tar –xvzf lame-3.100.tar.gz
cd lame-3.100
./configure
make
make install
#视频库
wget ftp://ftp.videolan.org/pub/x264/snapshots/last_x264.tar.bz2
bzip2 last_x264.tar.bz2
tar -xvf last_x264.tar
cd x264-snapshot-20181031-2245
./configure --enable-shared
这时候提示了错误
意思是需要nasm2.13版本的,要么在后面加上--disable-asm,不过以防万一,该装的还是装上的好
wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.xz
tar xvJf nasm-2.13.03.tar.xz
cd nasm-2.13.03
./configure
make
make install
现在nasm是2.13版本了
接下来继续安装X264
cd x264-snapshot-20181031-2245
./configure --enable-shared #现在安装没有问题了
make
make install
下载安装ffmpeg
wget https://ffmpeg.org/releases/ffmpeg-4.0.2.tar.bz2 #官网下载的是一个bz2文件
bzip2 -dkv ffmpeg-4.0.2.tar.bz2 #没有bzip2工具的话直接yum安装,解压出来的是tar文件
tar -xvf ffmpeg-4.0.2.tar
进入ffmpeg目录,./configure,结果提示’nasm/yasm not found or too old. Use --disable-x86asm for a crippled build‘,这是因为yasm没有安装
yum install yasm -y
./configure --enable-libmp3lame --enable-libx264 --enable-gpl
make
make install
3、ffmpeg安装完成
切片时提示错误:./ffmpeg: error while loading shared libraries: libx264.so.138: cannot open shared object file
解决方法: ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现
“ffmpeg: error while loading shared libraries: libmp3lame.so.0: cannot open shared object file: No such file or directory”等类似的错误,解决办法是建立软链接:
# ln -s /usr/local/lib/libmp3lame.so.0.0.0 /usr/lib64/libmp3lame.so.0
参考文档:
https://blog.csdn.net/weiyuefei/article/details/51690902
https://blog.csdn.net/li_wen01/article/details/61420268
以上是关于使用ffmpeg转码m3u8并播放的主要内容,如果未能解决你的问题,请参考以下文章
使用ffmpeg转码MP4至m3u8格式并切片,以及自动检测切片m3u8脚本编写