版权声明:本文为博主原创文章,未经博主允许不得转载。
主流视频APP的视频缓存有着不同的存储方案,下面一一进行分析。
主流视频APP下载电影电视剧一般都对内存的占用较大。对于较大的视频文件的存储,一种方法就是将视频文件分成大小相似的很多个小视频然后逐个下载,也叫伪流媒体。较为常见的一种是mp4格式作为视频的存储格式。这种伪流媒体采用普通的http方式,不像真实的流媒体协议传输格式rtsp,那样的话得搭建与门的流媒体服务器,成本比较高。同时这种方法还能实现边下载边播放的功能。要想实现这个功能,原则上就要求视频的存储格式是分段的,而mp4正好满足这个要求,只要将mp4的整体视频信息放在mp4文件的开头,这样只要加载了mp4文件的头部之后,就能解析出该mp4文件的时长,比特率等等,为后续的视频缓存做初始化设置,然后每加载一部mp4文件的数据流,通过解析头部来获得当前视频流的帧信息,并在播放器中播放。
因此,大视频文件的路径选择方法可以是许多个小文件的叠加,而每个小文件都可以独立选择存储路径,最后只要将组成同一个视频的小文件进行合并就可以。
1.优酷
以小米5为例,进行一个大小为135M的视频的缓存。
如
如上,所下载的视频的文件夹是左图,此文件夹的内容如右图所示,可以看出优酷也是将大视频文件分割成许多个小视频文件,但是图中的名字为1-7的文件并非mp4,而是.ts文件。该存储方式是m3u8格式。 m3u8是m3u的一种,是一种播放的标准。它是一种可扩展的播放列表文件格式。m3u是包含媒体文件URL的一个事实上的播放列表标准。这种格式被用来作为HTTP Live 媒体流索引文件的格式。 m3u8包含UTF-8编码文字的m3u播放列表,所有的原始视频文件都被下载到一个隐藏文件夹了。点击m3u8文件就会自动把这些 .ts文件链接在一起播放,可以用notepad++打开m3u8文件查看内容,里面是一个个本地文件的链接,这些链接指向一个个小视频文件,也就是说你找不到原来下载这个文件的网址了。
如果想直接播放完整的原始视频文件就要找到那个文件夹,里面的视频文件是一段一段的,先合并成一个完整的视频文件,然后就可以播放了。当然,如果删除了那个隐藏文件夹,那这个m3u8文件也就没用了,点击播放会提示解析失败。
其他测试机型类同。
2.爱奇艺
缓存一个大小为5.6M的资讯类视频
Paste_Image.png如上,所下载的视频的文件夹是左图的第一个文件夹,此文件夹的内容如右图所示,可以看出视频是由一个后缀名为".qsv"的文件构成。
用其他测试机也类似,而并没有进行大视频文件的分割。 通过查找资料可得:qsv是一种视频加速格式。qsv格式是爱奇艺公司研发的一种视频文件格式,由亍爱奇艺全面正版视频,故qsv格式只能使用奇艺播放器(爱奇艺影音)播放,不能通过普通的格式转换软件进行转换。
3.腾讯视频
用腾讯视频下载一个大小为91.6M的电视剧(一集)。
Paste_Image.png所下载的视频的文件夹是左图的第二个.sd文件夹,此文件夹的内容如右图所示,可以看出每下载一个视频就在左图路径下创建一个新的文件夹。文件夹下的视频是由多个mp4格式的视频文件构成的。 其他测试机型类同。
4.搜狐视频
用搜狐视频缓存一个大小为159.4M的综艺类视频。
Paste_Image.png如上,所下载的视频的文件夹是左图的第一个文件夹,此文件夹的内容如右图所示,可以看出每下载一个视频就在左图路径下创建一个新的文件夹,而且缓存的格式为m4u8。 m4u8是m4u的一种,与m3u8类似。这种文件包含链接到MPEG - 4电影和视频剪辑,但不包含视频文件本身,类似于一个M3U文件,存储播放列表的视频文件。
5.乐视视频
以小米5为例,进行一个大小为135M的电影视频和每集大小约为50M的电视剧(共5集)的缓存。
Paste_Image.png如上,是左图所下载的视频列表,共6个视频。右图是对应的文件夹的内容,可以看出在手机内存中新建的LetvDownload/storage/download保存。下载新视频并不会创建一个新的文件夹,直接保存在该目录下,且大视频文件(如右图第一个)不进行分割。保存格式为mp4。 另外,在乐视手机上测试时视频缓存路径有所不同,为 手机内存/ledown 应该是由于APP版本与其他机型的版本差距过大。
6.土豆视频
以小米5为例,进行一个大小为490.4M的电影视频和大小为3.4M的新闻视频的缓存。
Paste_Image.png
上方的图是两个视频文件的文件夹,下方左图是第一个文件夹的内容(3.4M的新闻视频),下方右图是第二个文件夹的内容(490.4M的电影视频)。通过不其他测试机型的比较,可以得出结论:土豆视频下载视频会创建新的文件夹,在下载小视频文件时,使用m3u8的视频格式,而在下载较大的视频时,使用mp4视频格式,同时会将大文件分割成多个mp4文件存储,合并时通过查找m3u8的列表文件播放mp4。
不同视频应用比较如下:
Paste_Image.pngPaste_Image.png
Paste_Image.png
综上所述,可以看出不同视频应用选择的存储路径主要分成两大类:一类是存储在手机内存根目录下的文件夹,另一类是存储在手机内存/Android/data/包名下的文件夹,关亍这两种方法的不同描述如下:
第一类的文件属于公共文件。文件是可以被自由访问,且文件的数据对其他应用或者用户来说都是有意义的,当应用被卸载后,其卸载前创建的文件仍然保留。如果你想在外存储上放公共文件你可以使用getExternalStoragePublicDirectory()这个方法。而第二类的文件属于私有文件。所有应用程序的外部存储的私有文件都放在根目录的Android/data/下,其实由于是外部存储的原因即是是这种类型的文件也能被其他程序访问,只不过一个应用私有的文件对其他应用其实是没有访问价值的(恶意程序除外)。外部存储上,应用私有文件的价值在亍卸载之后,这些文件也会被删除。类似于内部存储。
网友评论