音视频科普视频在七牛存储播放失败解决方法
音视频科普&视频在七牛存储播放失败解决方法
音视频科普&视频在七牛存储播放失败解决方法
文章目录
前言
本文的视频对象主要针对存储在七牛的用户。当然,触目旁通,也可以面向所有视频在浏览器不能播放的用户。
一、了解音视频
什么是视频?
从感性角度,视频是无数有趣画面的集合,是一部的具有冲击力表现丰富的短片或者电影。
从技术角度,一个画面可以有如下解析。
用思维导图描述如下:
任何视频文件,从结构上讲都可以分为有什么内容元素、使用了哪种编码格式,最后由何种容器封装。
而目前主流的编码格式是 H.264 + AAC 方案。
浏览器之video标签
浏览器播放视频都是通过H5的video标签,这个标签的功能就是让多媒体文件可以很方便的在网页中播放,示例如下:
<video src="视频链接" controls="controls" width="500" height="300"></video>
但是,尽管HTML5提供了播放视频的方式,HTML5却没有规定,浏览器到底应该播放哪一种格式的视频。浏览器厂商可以自行选择支持的格式。
当然,有以下通用的格式大部分浏览器都是兼容的:
MP4 = MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器
WebM = WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器
Ogg = Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器
而至于具体的编码格式兼容性,需要进一步测试。
二、点播视频存储七牛不能播放原因解析
1、编码原因
七牛云对于存储在七牛对象存储的视频有个非常便捷的查询元信息的方法(每个视频都带元信息,除非自己删除了),即通过以下格式访问视频:
http(s)://domain/key?avinfo
***注1:http(s)?/domain/key为视频链接,链接后加?avinfo获取元信息。
元信息接口文档: ***
注2:也可以ffmpeg获取元信息,参数如下 :
ffmpeg -i 视频文件地址
如前文所说,其实绝大部分视频不能播放都是编码原因,具体视频编码可以通过元信息接口得到。
如果发现视频的codec_name(编码器名称)值是MPEG-4,主流播放器都是不支持这种格式的,所以可以将视频编码转成H.264,转码方式见第三章。
注: 截图编码已经是H.264
2、编码方式的profile
如果编码方式正确,是各大浏览器都兼容的H.264 + AAC方案,但是你发现,视频在有些平台可以播放,有些平台则不可以播放。
这个时候,你一定很纠结,为什么视频就是不可以播放呢?
这个其实和视频的编码规格有关,根本原因,就是浏览器的兼容性。
AVC(H.264)规格分为三等,从低到高分别为:Baseline、Main、High
AAC规格也有三种:LC-AAC(最基本的)、HE-AAC、 HE-AAC v2
三者的关系如下:
通俗易懂的解释就是低码率下,HE-AAC比LC-AAC要好。
但是,Low Complexity (LC AAC)配置最被广泛用于商业市场,即被各大浏览器的兼容,但是HE-AAC经过实测,IE支持、safri需要重复刷新也支持,但是谷歌目前不支持。
所以,当音频是HE-AAC时,需要转码,转码看第三章。
注:H.264编码视频目前所测三种规格浏览器都支持
3、码率原因
所谓码率,即数据传输时单位时间传送的数据位数,通俗一点的理解就是取样率,单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件。
基本的算法是:【码率】(kbps)=【文件大小】(KB) * 8 / 【时间】(秒)
大白话就是,码率高,就需要更好的网络带宽。所以,当视频播放一直在转时,这个时候就要考虑是否码率过高的原因了。
码率推荐表:
注1:图一位宽屏,图二为非宽屏。
三、解决方案
转码方式解析 :