对于渐进式视频播放的一些总结

来源:互联网 发布:spring AOP源码实现 编辑:程序博客网 时间:2024/04/28 08:07

首先要说明的是,这里不是用的rtmp协议。

1、不是所有的视频都能够拖动到结尾的,有些在头里头就有canSeekToEnd的元数据;当然也不是所有的地方都能过拖,当遇到不能拖的时间的时候会抛出NetStream.Seek.InvalidTime事件。
2、有些视频是没有多少元数据的,甚至没有文件大小和时长。
3、不是设置文件的缓冲是多少秒就会等多少秒之后再播放的,如果文件缓冲好了还没有到那个秒数还是会播放。
4、缓冲时间太短在窗口大小切换的时候可能会出现视频卡的现象,尤其播放高清视频[建议5s].
5、进行流式播放的时候flv通常是直接从关键帧那里开始取一段,加上原来的头部,所以flv播放的第一帧对应的时间不是0s,但是在视频没有读到第一帧的时候返回的时间还是0。
6、对mp4文件而言又有区别,mp4是重组了头部的,他相当于一个新的单独的mp4文件,和其他子段已经没啥关系,所以时间从0开始。
7、当flash播放器正在播放的时候如果服务器停止服务,而flash又没有缓冲完所有的数据,这时候会狂抛stop事件。
8、播放自己组装的文件有时候也会出现FileStructureInvalidate的问题
9、flash是在Buffer.Full的时候才开始播放。
10、NetStream.Play.Stop事件抛出的时候实际上流不一定全都播放完了,实际上通常还有一段很短的播放时间,少数时候可能还有几秒。
11、你用flash播放器播放一个800m的视频,内存和缓存都不会到800m,实际上内存可能100m都不到,缓存可能200m都不到,当然有时候也会到200多m。
12、如果你的缓存满了,flash可能播放不了视频,因为flash播放视频时候是先要把文件放在缓存中的。
13、通过动态分段策略可以降低flash播放大视频文件的消耗,通过不同的url请求不同的视频段,flash认为是不同的文件,会把前一段消耗的缓存释放掉重新缓存新的一段。
14、设置flash视频声音的时候不能直接给soundTransform.volume赋值,而是应该直接把原来的流的soundTransform替换成new SoundTransform
15、网速不好的时候,播放器会频繁的抛出NetStream.Buffer.Flush,NetStream.Buffer.Empty,NetStream.Buffer.Full事件。
16、进行流式播放的时候,偶尔会出现视频卡住的现象,当然播放状态还是在播放,可能声音也有,数据也在推,但是画面就是不动,尝试向前seek一些有时候也能解决问题。
17、自定义类继承自NetStream的时候,可能会出现某些函数不灵的现象,比如resume,你可以seek一下,至于seek多少时间倒是没关系。
18、调节视频的音量或者是声道的时候最好要重新new一个SoundTransform,否则失灵,这是flash的一个bug。

 

原文地址:http://aaagu1234.blog.163.com/blog/static/40093715201001923641116/

原创粉丝点击