我正在使用 netstream 和 video 对象在 Flash 中播放视频。特别是mp4视频。
我要做的是从特定位置(例如 20 秒)开始播放文件。
但是,除非流已加载超过 20 秒,否则 netstreamObject.seek(20) 将不起作用。有没有办法指定在 20 秒开始加载?或任何其他方式来实现这一点?
我正在使用 netstream 和 video 对象在 Flash 中播放视频。特别是mp4视频。
我要做的是从特定位置(例如 20 秒)开始播放文件。
但是,除非流已加载超过 20 秒,否则 netstreamObject.seek(20) 将不起作用。有没有办法指定在 20 秒开始加载?或任何其他方式来实现这一点?
简短的回答是,“您不能在渐进式视频中搜索下载点。” 但是,Akamai 和其他 CDN(例如 YouTube)拥有允许搜索渐进式视频的技术。这并不能解决您的问题,因为它是专有的服务器技术。在您的情况下,仅使用无法控制文件或流服务器的客户端代码,在文件加载之前无法进行搜索。
您可以使用某种支持 lighttpd 的 CDN 缓存服务器(因此实际文件将通过此缓存服务器提供),然后您可以在视频中查找。
是的,您甚至可以在渐进式上执行此操作,它被称为 http 伪流,查找它,您会找到大量的示例。基本上,您需要服务器上的一块来接收请求,在初始请求中,您将通过 http 标头添加起点,服务器端将自动移动到该偏移量。
不过现在有更好的方法。在我看来,RTMP 很烂,它是 Adobe 专有的,并且可以在非标准端口上工作,所以很多用户都对它有疑问。如果你想认真做对。查找 apache f4f 模块、adobe http 动态流和 f4fpackager。根据 apache 源模块上的 Adobe 文档设置 apache 服务器,使用 f4fpackager 将您的视频/音频分块。现在将您的网络流指向 f4m。您不仅可以快速搜索,还可以使用标准 http,可以使用普通的旧 CDN 来缓存和服务器请求,而且您还可以支持多种比特率的自适应流媒体。