使用Flash流式传输视频

时间:2012-08-14 14:04:54

标签: flash actionscript amazon-s3 video-streaming

我只是花了一整天时间来解决这个问题而且我害怕我错过了什么。

我的S3服务器上有一个简单的mov / mp4文件,带有AVC编码,我有一个应该播放它的swf文件。我找到了2种方法,如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 ctor中失败了:

  

ArgumentError:错误#2126:必须连接NetConnection对象。

问题:

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

2 个答案:

答案 0 :(得分:0)

对于你的两种方法:

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

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

答案 1 :(得分:0)

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

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