我一直在寻找这个问题,而且我的google-fu很弱或者还没有找到答案......
我正在使用NetStream从任何地方流式传输视频文件。 NetStream未连接到任何服务器。这是代码:
// Create new connection and stream
_netCon = new NetConnection();
_netCon.connect(null);
_netStream = new NetStream(_netCon);
_netStream.client = this;
_netStream.play(url);
// Configure video layer
_videoLayer.attachNetStream(null);
_videoLayer.attachNetStream(_netStream);
_videoLayer.width = stage.stageWidth;
_videoLayer.height = stage.stageHeight;
当然,这基本上可行,但视频总是在完全加载时开始播放。它也只传递元数据。但使用NetStream的主要原因是,您可以在完全加载之前播放视频。
我尝试使用bufferTime属性,但无济于事。 还要确保加载视频时不涉及缓存。我总是通过在网址后添加一些“?bla = date”值来加载“新的”。
“真正的”流媒体只有在真正连接到服务器时才有效吗?或者我错过了其他什么?
答案 0 :(得分:2)
它可能正在等待元数据 - 这肯定是.h264视频的情况。我从来没有听说它是固定的,所以,可能不是。如果这是您尝试播放的文件,请使用类似ffmpeg的内容将元数据移动到文件的开头,但如果不是 - 您可以尝试使用URLStream
自行播放,然后将其提供给{{ 1}}通过NetStream
(后来我没试过,但理论上应该可以)。
答案 1 :(得分:1)
Flash在FLV中支持的设置非常宽松,但我不确定它是100%。至于netConnection,除非你支持流视频,否则这是非常标准的。您只是在寻找缓冲的播放解决方案,然后立即播放视频,而不是等待整个FLV加载。这也是netstream对象最基本的操作。在没有查看完整代码的情况下,我可以告诉您NetStream非常错误且非常特别。可能是你正在做的一切正确,但顺序错误。或者您可能正在侦听不存在的事件,因为NetStream改为使用回调。
这是我写的两篇博文,更深入地介绍了NetStream和Video问题,以及我上次为解决这些问题所做的工作。他们可能会说明你的设置误入歧途。
答案 2 :(得分:0)
要清理:
问题确实在我们视频文件中元数据的位置。由于我们有更重要的问题,我们暂时没有解决这个问题。但我们将回过头来,将元数据位置移动到视频文件的开头。
感谢您的帮助!