2012-08-14 143 views
0

我只是在这个问题上度过了一整天,恐怕我错过了一些东西。使用Flash流式传输视频

我在我的S3服务器上使用AVC编码有一个简单的mov/mp4文件,并且我有一个应该播放它的swf文件。我发现有两种方法可以做到这一点,如here所述。

第一个是:

nc.connect(null); 
var ns:NetStream = new NetStream(nc); 
ns.play("http://url.path/movie.mov"); 

这工作,但它看起来像它下载的视频,一旦完成,将开始播放。

为了使用它的视频流也说,使用这样的:

nc.connect("http://url.path/"); 
var ns:NetStream = new NetStream(nc); 
ns.play("movie.mov"); 

我在NetStream的构造函数该代码失败:

ArgumentError: Error #2126: NetConnection object must be connected.

问题:

  1. 这是这样做的正确方法还是我在代码中遗漏了一些东西?
  2. 我发现this thread,这让我非常伤心,但我建立了一些播放S#流媒体视频的HTML视频播放器,这是怎么回事?
  3. 读一点,看到它可能是因为h264格式,它只在最后发送元数据。这是正确的吗?将它转换成另一种格式就可以解决它?
  4. 所有的Flash流媒体教程假设我用RTMP协议存储我的视频,阅读了一下,看到我可以使用Adobe Media Server 5 on Amazon Web Services。我一定要吗?有没有免费的解决方案,或闪光只能流这个协议?

Thx。

+0

你看过Red5媒体服务器吗? http://www.red5.org/ - 它是开源的,可以免费使用。 – bigp 2012-08-14 14:10:05

+0

你有没有想过这件事? – BadFeelingAboutThis 2012-08-20 17:08:35

+0

还没有,我需要检查空气应用程序是否修复它。 – shem 2012-08-21 06:57:01

回答

0

为了您的方法有两种:

  1. 无论你的服务器需要被告知流MIME类型(我有S3没有经验,但很可能已经设置了常见的视频类型)或文件类型不是支持流式传输的类型(MOOV原子--meta数据 - 位于文件末尾而不是起始位置)。使用Adobe Media Encoder(或将该数据置于文件开头的其他编码程序)重新编码为.mp4(h.264编码)或.f4v(或.flv)。

  2. 这是用于流媒体服务器(Flash Media Server),因此您可以输入媒体服务器的地址:例如, “RTMP://媒体服务器/应用/ streamName中”。

+0

1.它是一个在h.264中编码的mov文件(当我下载它时,它的下载格式为mp4)。而mime类型是video/mp4。 2.我必须使用这个吗? – shem 2012-08-14 19:55:38

+0

服务器可能不会流式传输,因为它位于.mov容器中。我知道一些mp4文件在文件末尾有所有的元数据,这也可能是你的问题。我试着用Adobe Media Encoder将它重新编码为f4v或mp4,并完全抛弃mov容器。您也可以尝试将您的源文件从.mov重命名为.mp4 – BadFeelingAboutThis 2012-08-14 20:53:44

+0

Thx作为评论 - 重命名和重新编码没有帮助,还有其他想法? – shem 2012-08-15 08:16:38

0

如果文件在播放开始前完全下载,可能是因为元数据位于视频的末尾。

尝试使用qt-faststart(或在线搜索预编译的二进制版本)将此元数据移动到文件的开头。