附件下载:
http://ffmpeg.org/download.html null
http://ffmpeg.org/releases/ null
wget null
http://ffmpeg.org/releases/ffmpeg-5.1.tar.bz2 null
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz null
https://trac.ffmpeg.org/wiki/CompilationGuide/Centos null
http://www.tortall.net/projects/yasm/releases/ null
http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz null
wget null
http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz null
https://www.codenong.com/cs109434893/ null
https://johnvansickle.com/ffmpeg/ null
linux-ffmpeg-6.0-release-amd64-static.tar.xz.xz
windows-ffmpeg-6.0-full_build.7z
1、首先在官网 http://ffmpeg.org/download.html 下载ffmpeg-5.1.tar.bz2
安装ffmpeg
1、下载安装包 wget
http://ffmpeg.org/releases/ffmpeg-5.1.tar.bz2
2、解压源码包进入该文件夹下:cd /usr/ffmpeg/(这里我是安装到usr目录下新建的ffmpeg文件夹中)
安装bzip2组件: yum install bzip2解压该源码包:tar -jxvf ffmpeg-5.1.tar.bz2
**、进入到解压完成的ffmpeg-4.2.1目录下安装yasm(如已安装跳过此步骤)**安装yasm命令:yum install yasm
4、安装ffmpeg ./configure --enable-shared --prefix=/usr/ffmpeg
5、执行make && make install(安装)命令make && make install
6、修改文件/etc/ld.so.confvim /etc/ld.so.conf在文件后面添加 /usr/ffmpeg/lib/然后执行ldconfig命令使其生效
7、配置环境变量vim /etc/profile#set ffmpeg environmentPATH=$PATH:/usr/ffmpeg/binexport PATH:
执行 source /etc/profile使配置生效
8、查看是否配置成功用命令ffmpeg -version查看,检查是否安装成功。
安装到此已经完成完成了,我这里用于视频切片和加密的。所以这里需要有相应的编码要求, 默认的安装支持的编码很少,所以你需要额外增加对编码的支持。当然也有更加简单的使用方法,就是 直接下载static的版本,直接使用。
下载地址:
https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
解压:
tar -xvf ffmpeg-release-amd64-static.tar.xz
当然如何你喜欢折腾的话,可以看官方的文档:
https://trac.ffmpeg.org/wiki/CompilationGuide/Centos
手动安装yasm
( http://www.tortall.net/projects/yasm/releases/ )
wget
http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zxvf yasm-1.3.0.tar.gz# cd yasm-1.3.0# ./configure# make && make install
yasm --version查看是否安装成功
其他问题
https://www.codenong.com/cs109434893/
安装完上诉依赖后重新安装ffmpeg
解压版ffmpeg
ffmpeg在Windows上使用时,可以直接解压,配置环境变量后应用。在Linux下的情况时,通过在官网下载静态包,也可以做到解压即用。下载地址(一般下载最新版就好):下载ffmpeg-release-amd64-static.tar.xz文件 https://johnvansickle.com/ffmpeg/
解压
解压后,进bin目录查看是否存在ffmpeg ffprobe两个可执行程序配置环境变量,方便程序调用时可直接使用命令
ffmpeg把mp4与m3u8相互转换的操作
一、MP4 转 M3U8M3U8 是 Unicode 版本的 M3U,用 UTF-8 编码。”M3U” 和 “M3U8” 文件都是苹果公司使用的 HTTP Live Streaming(HLS) 协议格式的基础,这种协议格式可以在 iPhone 和 Macbook 等设备播放。
简单来说,m3u8是一个视频格式,就是将一个视频分成很多的小部分,这样方便视频的加载。
1、操作简单,但效率低
生成的效果是:
生成的效果是:
将 input.mp4 视频文件每 15 秒生成一个 ts 文件,最后生成一个 m3u8 文件,m3u8 文件是 ts 的索引文件。
我们直接用 VLC media player 等播放软件是可以直接打开 m3u8 文件,像播放 mp4 一样。
默认的每片长度为 2 秒,m3u8 文件中默认只保存最新的 5 条片的信息,导致最后播放的时候只能播最后的一小部分(直播的时候特别注意)。-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、效率优化版,提升效率TS 文件是一种媒体的扩展名,它是日本高清摄像机拍摄下进行的封装格式。MPEG2-TS(Transport Stream“传输流”;又称TS、TP、MPEG-TS 或 M2T)是用于音效、图像与数据的通信协定,最早应用于DVD的实时传送节目。MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。
1.视频整体转码ts
2. ts 文件切片
3、hls_time 切片时间不准确的问题播放 m3u8 的 ts 切片,必须要完整的下载一个 ts 切片,才能够播放,设置hls_time 的时间间隔越短越好( 根据实际情况来 ),实际过程中设置切片时间间隔为 2 秒,调用如下指令:
ffmpeg -i test.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_time 2 index.m3u8但没有按照参数输入,进行切片。
原因:
ts 文件的切割,还跟原文件视频的 GOP 大小有关系(也就是两个 I 帧之间的时间间隔),因为任何一个 ts 分片第一帧必须是I帧,否则无法最快播放,并且第一帧不是 I 帧,对于播放器也是没有任何的意义,直接被播放器扔掉。任何一个视频流必须在获取到第一个I帧才能成功解码出图片。虽然指定了 1 秒切割一个 ts 文件,实际上,由于原视频流可能好几秒才有一个 I 帧,所以必须等到下一个 I 帧,才会重新开始切片。
解决:
既然知道要1秒产生一个ts分片,那就必须产生切片的过程中,强制一秒中产生一个关键帧。
设置关键帧间隔,设置间隔为 2 秒的参数如下:-force_key_frames "expr:gte(t,n_forced*2)“
完整指令如: