FFMPEG实现MP4和m3u8视频文件的转换

一、什么是ffmpeg?

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。

 

二、什么是m3u8?

M3U8视频格式也是一种M3U,只是它的编码格式是UTF-8格式。M3U用Latin-1字符集编码。M3U8格式特点是带有一个目录信息或文件。

M3U(Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator)这种文件格式,本质上说不是音频文件,它并不能在脱机模式下读取网络资源音频,它是音频文件的列表文件,是纯文本文件。你下载下来打开它,播放软件并不是播放它,而是根据它的记录找到网络地址进行在线播放。

要脱机播放m3u,分为两种方法,第一种是在m3u的文本中写入音频文件的本地路径,并且音频文件的路径不能更改,若要更改,m3u文件的文本也要相应更改;第二种方法是把m3u文件与音频文件放入同一文件夹,m3u文件所在文件夹以及以上的地址都可以省略不写,音乐文件也可以放在m3u文件所在文件夹的子文件夹。

 

三、为什么使用m3u8?

随着客户在移动端播放的需求日益强烈,我们的转码软件开始输出mp4格式文件,经过测试,发现优秀的软件压缩mp4跟flv压缩率几乎相差无几,于是我们把输出格式统一为mp4,经过我们软件处理后的mp4文件能实现无缓冲拖拽播放(快进播放),也解决了部分视频文件有声音无画面的问题,赢得了客户的好评。

随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面,一是当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客户早已急不可耐。二是当用户打开一个视频播放的时候,浏览器会持续请求下载mp4文件直到下载完成,就算是用户暂停视频播放浏览器也会持续这种下载状态,如果这个视频文件是500M则会请求服务器下载500M文件,是1G则会不停下载1G,给服务器硬盘和宽带造成很大浪费和压力。

于是我们参考优酷土豆等大型视频网站系统的播放文件,发现他们的视频文件都是分段播放的,即把一个大的视频文件按照一定大小或时长把一个视频分为N段播放,这样的优势是打开视频加载速度快,可以达到秒播,另外一个优势是当视频播放第N段的时候,浏览器会下载N+1段,N+2则不会下载,大大缓解了服务器硬盘和宽带压力,可知道高昂的宽带成本才是视频网站的最大压力。这样的视频文件处理方式得到了大量客户的一致好评。

可是很快我们又发现了一个很严重的问题,xml分段列表的视频在IOS上面也是一筹莫展,为了让视频在IOS设备播放还得保留mp4文件给IOS设备播放。于是m3u8播放列表登场了。

m3u8是苹果公司开发的一项新型播放格式,这种播放格式支持目前市面的windows、androis、ios设备主流的浏览器,同样的视频文件既可以在flash环境播放,又能在无flash的html5环境播放,它的优势还不止于此,它可以实现多种码率在不同网速下的自动切换,网速好自动切换高清晰度视频,网速慢自动播放低清晰度文件,还可以实现流加密(视频文件本身加密)、分段下载播放、任意时间点拖拽播放、随机视频文件广告插入等等优势,所以最新版的云转码视频系统仅把m3u8作为唯一的播放格式而放弃了其他格式的输出。

 

四、安装ffmpeg

首先下载windows 可用的ffmpeg文件

网址为:https://ffmpeg.zeranoe.com/builds/

1、下载后直接解压:

2、配置环境变量:

在系统变量的path中添加ffmpeg文件夹中 bin 的路径

配置完成后检测是否配置成功

在CMD中输入 ffmpeg -version,出现如下信息则配置成功

 

五、开始转换

1、准备Mp4文件

打开CMD

根据文件位置在CMD中执行以下命令

ffmpeg -i E:\demo\demo.MP4 -profile:v baseline -level 3.0 -s 640x360 -start_number 0 -hls_time 10 -hls_list_size 0 -f hls E:\demo\demo.m3u8

如出现以下提示则转换成功

我们看一下转换m3u8文件夹中的文件

文件中包括一个m3u8文件和多个ts文件

我们打开m3u8文件

发现文件中其实就是指定了其他文件的路径。

个人的理解:转换后的文件就是几个视频的切片文件(.ts文件)组成的列表,在m3u8文件中记录了切片文件的顺序,当我们访问m3u8文件时,会依次加载几个小的视频切片文件。

 

 

 

 

你可能感兴趣的:(软件安装)