AS3解析FLV格式和视频问题总结

为什么要解析FLV格式?

在直播项目里面遇到需要统计flash视频帧间隔时长,首帧,GOP,等关键数据的时候,不可避免的需要对flv文件进行解析。

名词定义

首帧:是指用户看到第一个视频帧。
首帧时长:是指用户打开网页到看到第一个视频帧。
I帧:视频关键帧,包含全部的图形信息。
P帧:视频间隔帧,是根据P帧前面的P帧或者I帧diff出来的帧。数据量比I帧小。
GOP:Group of picture(图像组),指两个I帧之间的距离
FLV文件格式的定义

FLV格式定义:FLV是一种容器格式,它支持的音频编码有 linear PCM、ADPCM、MP3、Nellymoser、G711 A-law PCM、G711 mu-law PCM、AAC、Speex等,支持的视频编码有H264、On2 VP6、Sorenson Spark等。

使用OSMF解析FLV格式

地址: ps://sourceforge.net/adobe/osmf/home/Home/">https://sourceforge.net/adobe/osmf/home/Home/

使用OSFM的org.osmf.net.httpstreaming.flv.FLVParser类

var flvParse = new FLVParser();
flvParse.parse(inBytes, true, function(currentTag:FLVTag):Boolean
{
    switch (currentTag.tagType)
    {
        case FLVTag.TAG_TYPE_VIDEO:
        {
            // 视频帧,可以通过FLVTagVideo的frameType来判断是不是I帧来计算GOP
            // 统计帧间隔
            break;
        }
        case FLVTag.TAG_TYPE_AUDIO:
        {
            // 音频帧
            break;
        }
        default :
        {
            // script帧
            break;
        }
    }
    return true;
});
视频播放质量监控

关键数据:首帧、掉帧率、flashBuffer长度 首帧直接关系到用户的体验,最好能做到秒开。 掉帧率可以体现出用户观看视频时的卡顿情况。 flashBuffer长度可以一定程度上体现用户延时状况。

经过反复试验发现bufferTime增大会一定程度上减小掉帧率。但是会增大FlashBuffer长度,也就是会增大延时。同时也会增大首帧时长。目前在线课堂的bufferTime值为1S。

再说说掉帧,就目前所知掉帧和bufferTime、浏览器、flv文件视频帧时间戳等都有一定关系。 浏览器方面Chrome掉帧比IE要高。视频帧时间戳均匀可以减少掉帧。

直播中常见的问题

[有声音没画面]

原因:当用户进入后必须等到一个I帧才能解开。P帧需要参考前置帧。视频直播的过程中用户是随机进入的,那么用户收到的第一个帧就有可能是P帧也有可能是I帧,如果用户刚好很走运接到的第一个帧就是I帧那么他就是秒开。

解决方案:我们前面说了用户接到的第一个帧就是I帧那么就是秒开。怎么才能让用户接到的第一个帧就是I帧呢?有两种方案

缓存I帧(或者叫缓存GOP):

服务端缓存上一个I帧到用户进入时刻的所有帧,一次丢给客户端。这时客户端就会秒开客户端为了减少和源头的延迟,通常会做加速播放。比如斗鱼、映客就是采用这种方案。

优点:技术实现相对简单,可以实现秒开。

缺点:当用户频繁进出房间,会造成服务端大量的带宽开销。

动态编码I帧:

服务端没个把直播过程中的视频解码,动态编码。


如图:假设我们的GOP是5,实际使用的时候大概是40或者更高(我们的GOP大概是200我会乱说) 服务器为I帧和P帧间的每一个P帧开一个独立编码序列。代价就是当GOP是40的时候就要有40个编码序列。

优点:可以节省服务端带宽资源
缺点:就是比较消耗CPU资源。

[有画面没声音]

这个可能性比较小,原因通常是上行没有声音。

时间: 2024-11-05 16:28:37

AS3解析FLV格式和视频问题总结的相关文章

flv-求助 关于jwplayer 播放FLV格式视频时seek定位

问题描述 求助 关于jwplayer 播放FLV格式视频时seek定位 通过seek定位控制的时候,MP4格式的视频就没问题,flv格式的基本都会存在几秒的误差, 不知道这个问题应该怎么解决 解决方案 flv格式视频播放在网页中插入FLV格式的视频在本地预览中能播放,上传到服务器就不能播放.net 网站 播放flv格式视频

Java调用命令实现视频上传过程中自动转换为flv格式并截图生成缩略图

//视频上传过程中自动转换为flv格式并截图生成缩略图(Java调用命令实现) import java.util.ArrayList; import java.util.List; public class VideoProcess { System.out.println(oldfilepath+"->"+newfilename+"- >"+newimg); List<String> commendF = new ArrayList<

ASP中将视频文件转换成.flv格式

  现在出现很的网上在线视频其文件格式都是.FLV格式,那些视频网站大概也有一个视频转换软件,所我在也试着去做了一个demo拿出来和大家共享一下,由于自己的技术有限,做的不怎么样,愿有高人看完给 在下指点一二.呵.... 费话不多说了,下面来分解一下这个Demo. 首先,我们部署一下文件夹.在工程的目录下新建几个文件夹如下图: 中将视频文件转换成.flv格式UpFiles文件夹是要保存你上传的文件,PlayFiles文件夹是用于你转换后保存的文件(用于网上播放) ImgFile文件夹是保存截取视

dvd-支持MPEG4的DVD机,能够播放什么格式的视频

问题描述 支持MPEG4的DVD机,能够播放什么格式的视频 家里的DVD机支持MPEG4的编码格式 1.我现在将多个视频都转成了MP4(用的是MPEG4的编码格式),现在想将这多个MP4通过nero刻录成**数据DVD**,不知道数据光盘能不能在DVD机上播放. 2.或者将视频转成avi格式(同样选用MPEG4的编码格式),然后刻录成**数据DVD**,这样不知道能不能播放. 3.或者都不行的话,请问用什么方法最好? 我刻录的时候选的是数据DVD光盘,不是选择的视频光盘 网上都说DVD支持MPE

分析并解决FLV格式文件上传服务器后不能播放

服务器|解决|上传 FLV格式文件上传服务器后不能播放因为国内大多都是Win2003的主机.默认是没有指定输出FLV这种格式的虽然FTP里面可以看见,但无法通过http访问,也就无法播放了. [原因:WIN2003加强了IIS6的MIME验证,一切未注册扩展文件格式统统显示404错误.手动在IIS中HTTP头->MIME添加MIME影射关系,MIME类型: video/x-flv 扩展名:.flv,即可通过Flash7+客户端Load进来播放] [办法解决"虚拟主机都不支持Flv格式文件&

windows server 2003不支持FLV格式的流式播放问题

有许多朋友在论坛上提到在windows server 2003上不能支持FLV格式的流式播放问题. 原因是由于windows server 2003上并没有.FLV的这种mime-type类型,对于这一点Adobe给出了它的解决方案.如下: 1. 在2003服务器上,找开IIS管理器. 2. 展开本地服务器名称,右击选择属性,在Internet信息服务标签上,点击最下方的计算机MIME映射下面的编辑按钮. 3. 点击"新类型"按钮,扩展名添上".FLV",内容类型(

PHP从FLV文件获取视频预览图的方法

 这篇文章主要介绍了PHP从FLV文件获取视频预览图的方法,实例分析了php操作flv文件获取截图的技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了PHP从FLV文件获取视频预览图的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <?php // references http://www.longtailvideo.com/support/forum/Modules/12661/External-PHP-with-FFmpeg-using-readfil

PPT2003播放多种格式的视频的方法

  一般情况,我们在PowerPoint2003中插入视频文件的方法都是点击菜单栏--插入,然后把本地视频上传进去.不过这样的方法也不全面,有些格式的视频传上去并不能播放.下面,我教大家利用Windows Media控件的方法来播放多种格式的视频文件. ①单击菜单栏--视图--工具栏--控件工具箱. ②在控件工具里面点击其他控件,然后选择Windows Media Player. ③鼠标划定播放器的大小,如下图. ④选中播放器,右键,选择属性. ⑤在URL一栏输入视频的路径就行了,可以是本地路径

evd支持什么格式的视频文件?

evd支持什么格式的视频文件? evd是dvd的升级,可以兼容dvd的任何格式,如果用U盘播放最好使用MPEG1.MPEG2.MP4等格式视频.AVI格式有多种编码,一般都支持,只是个别的不支持. USB端口接上U盘放的格式MP3除外只能放MP4和AVI格式的影片,而且影片大小不能超过700M,如果超过了就不能放要是能放也是一卡一卡的. 格式要是mpge4-avi,只有这个格式才能看,我现在就在用这个格式,不是所有的mp4格式都可以,你可以去下一个软件叫total video converter