最近在做基于 NetStream 的 appendBytes() 方法的快速搜索(seek)。
由于渐进式下载不能直接seek到未下载完成的部分,而用FMS成本又比较高,因此采用了如下方法:
根据seek的时间点,获取距离最近的关键帧位置的字节数,然后请求从该帧到下一关键帧的字节,作为一个切片appendBytes到NetStream中。之后继续请求下一帧的切片并添加到NetStream中播放。由于每次请求两帧之间的数据,返回速度很快,响应也就快。
条件:
1,FLV文件的所有关键帧信息(例如 ... <bytes=392013 time=13.293/> ...),可以用FFMPEG获得;
2,准备一个Nginx插件,用来返回指定flv文件的指定字节片段;
有几个需要注意的地方:
1,需要先添加文件最开始的两个切片,然后才能seek到其他位置。
第一个片一般是FLV文件头以及metadata数据,第二个片是一个关键帧,包含一个video tag和一个audio tag,字节数都很小;
最开始的时候我以为只要添加了第一个切片就行了,实验的结果似乎表明第二个片是NetStream用来初始化byte parser所必须的。
本来最早想的是直接请求任意位置的切片就播放。
2,解析字节需要时间。这个发现的依据是,本来为了简化逻辑,把前两片作为第一片来请求,这样的话添加了第一片后,就可以认为NetStream准备好了。但是如果在添加这第一片后马上seek到其他片,发现播放会出现问题,比如有画面没声音。因此尝试了推迟添加后面seek的片,问题没有再现。
3,在seek时需要先用seek(0)清空NetStream的两个缓存,这样time属性和buffer属性才能归零。
A NetStream object has two buffers: the FIFO from appendBytes()
to the NetStream, and the playout buffer.
并且需要调用appendBytesAction(NetStreamAppendBytesAction.RESET_SEEK) 来告诉NetStream这是个seek操作。
4,NetStreamAppendBytesAction的三个参数都可能用到,需要好好看看文档。
5,无法截图!使用appendBytes之前需要netStream.play(null),也就没有地方去加载crossdomain文件。网上也没搜到解决办法。
相关推荐
netStream视频结束判断
华为交换机NetStream配置及技术原理 NetStream是一种基于网络流信息的统计技术,可以对网络中的业务流量情况进行统计和分析。它可以对网络中的业务流量和资源使用情况进行分类统计,并将统计信息发送至服务器进行...
### NetStream技术详解 #### 技术背景与应用价值 随着互联网技术的飞速发展,网络带宽不断提升,网络业务及应用种类日益丰富。为了更好地管理和优化网络资源,传统的流量统计方法(例如SNMP、端口镜像等)已显得...
华为作为全球领先的信息与通信技术(ICT)解决方案提供商,在NetStream技术方面拥有丰富的经验和创新的技术方案。 #### 二、NetStream技术核心要点 ##### 2.1 技术背景与重要性 随着互联网技术的飞速发展,用户...
### NetStream 类与关键事件处理 #### 一、NetStream 类概述 NetStream 类是 ActionScript 中用于处理网络流媒体的重要类之一。它主要用于管理 Flash 应用程序中的音视频流,包括播放、暂停、停止等操作。在实际...
NetStream技术是网络流量监控和分析领域中的一个重要概念,它主要负责收集、处理并发布网络流数据,以实现对网络中各种业务的精细化管理和计费。在深入理解NetStream技术之前,我们需要首先了解网络流的基本概念。...
NetStream技术是Cisco网络设备提供的一种高级流量分析和数据收集工具,主要用于网络监控和管理。它能够对网络流量进行深入的统计分析,帮助网络管理员识别流量模式,检测异常,优化网络性能,以及辅助故障排查。以下...
【标题】与【描述】提到的"H3C SecBlade NetStream区分接口流量特性开局指导"是一份由杭州华三通信技术有限公司提供的技术文档,主要针对H3C的网络安全设备,特别是SecBlade NetStream功能在区分接口流量特性方面的...
NetConnection 和 NetStream 的状态检测 ================================================================ nc = new NetConnection(); nc.connect("rtmp://"+host+"/"+dir+"/"+name); //----------------------...
flex两个netstream实现视频分段加载播放 。 适用于flash,flex
### 网络流信息的统计与发布技术 NetStream技术白皮书 #### 技术概览 NetStream是一项先进的网络技术,它主要用于对网络流量和资源使用状况进行精确的统计与发布。这一技术的核心价值在于它能为网络管理者提供详尽...
NetStream是一种在网络中传输数据的协议,主要用于实时流媒体服务,如音频、视频或数据的传输。这个项目标题提到的“netstream:一个简单的netstream解析器,支持nsv5”,意味着它是一个针对NetStream协议的轻量级...
NetStream是华为网络设备上的一个高级流量分析和监控特性,它允许网络管理员收集和分析网络流量数据,以便进行故障排查、性能优化以及计费等任务。在本配置实例中,NetStream被应用于运营商的互联网出口,以对不同接...
【华为 NE05E&NE08E V300R003C10SPC500 特性描述 - NetStream】是华为公司的一种网络流量统计和发布技术,具有专利保护。NetStream的主要目标是帮助网络运营商进行更精细化的管理和计费,尤其在互联网高速发展的背景...
天福神龙Netstream 4000是一款专门设计用于网络视频流解压的高性能硬件设备,它在处理多媒体内容方面表现出色,尤其适合需要高效处理MPEG标准格式的场合。这款产品支持多种编码标准,包括MPEG-1、MPEG-2以及MPEG-4,...
AR G3企业路由器是华为推出的一款面向企业的高性能路由器,它集成了NetStream技术,用于网络流量分析和监控。NetStream是一种先进的网络流量管理技术,它能够收集并分析网络中的IP流量数据,帮助管理员识别流量模式...
netstream-查看器-java 用 Java 编写的 NetStream (GraphStream) Live Graph Viewer。 这个小而方便的程序为传入的 NetStream [1] 事件创建实时图形显示。 底层图形库是使用 MultiGraph [3] 实现的 GraphStream [2...
华为技术有限公司推出的NetStream技术是一项专有网络流量信息统计与发布技术,旨在提供更为精细的网络流量分析能力,以支持网络管理、计费等多方面需求。随着网络流量的日益增长和复杂化,传统的流量统计方式已经...
【标题】"Mp4Player: 视频netStream flexlite" 涉及的主要知识点是JavaScript编程中的视频播放技术,特别是使用FlexLite技术处理NetStream的MP4视频播放。在这个项目中,我们可能会遇到以下几个核心概念和技术: 1....