1、FFmpeg介绍
FFmpeg
被许多开源项目采用,
QQ
影音、暴风影音、
VLC
等。
下载:
FFmpeg
https://www.ffffmpeg.org/download.html#build-windows
下载 :
ffmpeg-20180227-fa0c9d6-win64-static.zip
,并解压,本教程将
ffmpeg
解压到了
F:\devenv\edusoft\ffmpeg-20180227-fa0c9d6-win64-static\ffmpeg-20180227-fa0c9d6-win64-static
下。
将
F:\devenv\edusoft\ffmpeg-20180227-fa0c9d6-win64-static\ffmpeg-20180227-fa0c9d6-win64-static\bin
目
录配置在
path
环境变量中(类似Java环境变量配置,不会自行百度)。
检测是否安装成功:
打开终端 输入 : ffmpeg -version
简单的测试:
将一个
.avi
文件转成
mp4
、
mp3
、
gif
等。
比如我们将
lucene.avi
文件转成
mp4
,运行如下命令:
ffmpeg -i lucene.avi lucene.mp4
转成
mp3
:
ffmpeg -i lucene.avi lucene.mp3
转成
gif
:
ffmpeg -i lucene.avi lucene.gif
官方文档(英文):
http://ffmpeg.org/ffmpeg.html
2、使用ffmpeg生成 m3u8的步骤如下:
第一步:先将
avi
视频转成
mp4
ffmpeg.exe ‐i lucene.avi ‐c:v libx264 ‐s 1280x720 ‐pix_fmt yuv420p ‐b:a 63k ‐b:v 753k ‐r 18 .\lucene.mp4
各参数意思:
-c:v
视频编码为
x264
,
x264
编码是
H264
的一种开源编码格式。
-s
设置分辨率
-pix_fmt yuv420p
:设置像素采样方式,主流的采样方式有三种,
YUV4:4:4
,
YUV4:2:2
,
YUV4:2:0
,它的作用是
根据采样方式来从码流中还原每个像素点的
YUV
(亮度信息与色彩信息)值。
-b
设置码率,
-b:a
和
-b:v
分别表示音频的码率和视频的码率,
-b
表示音频加视频的总码率。码率对一个视频质量有
很大的作用,后边会介绍。
-r
:帧率,表示每秒更新图像画面的次数,通常大于
24
肉眼就没有连贯与停顿的感觉了。
第二步:将
mp4
生成
m3u8
ffmpeg ‐i lucene.mp4 ‐hls_time 10 ‐hls_list_size 0 ‐hls_segment_filename ./hls/lucene_%05d.ts ./hls/lucene.m3u8
-hls_time
设置每片的长度,单位为秒
-hls_list_size n:
保存的分片的数量,设置为
0
表示保存所有分片
-hls_segment_fifilename
:段文件的名称,
%05d
表示
5
位数字
生成的效果是:将
lucene.mp4
视频文件每
10
秒生成一个
ts
文件,最后生成一个
m3u8
文件,
m3u8
文件是
ts
的索引
文件。
使用
VLC
打开
m3u8
文件,测试播放效果,
VLC
是一款自由、开源的跨平台多媒体播放器及框架,可播放大多数多
媒体文件,以及
DVD
、音频
CD
、
VCD
及各类流媒体协议。(
http://www.videolan.org/
)
码率的设置 :
码率又叫比特率即每秒传输的
bit
数,单位为
bps(Bit Per Second)
,码率越大传送数据的速度越快。
码率的计算公式是:文件大小(转成
bit
)
/
时长(秒)
/1024 = kbps
即每秒传输千位数
例如一个
1M
的视频,它的时长是
10s
,它的码率等于
1*1024*1024*8/10/1024 = 819Kbps
码率设置到多少才能达到最好,通过根据个人的经验或参考一些视频网台给出的参考,下图是优酷对码率的要求: