0

我只是花了一整天的时间在这个问题上,我担心我错过了一些东西。

我的 S3 服务器上有一个使用 AVC 编码的简单 mov/mp4 文件,并且我有一个可以播放它的 swf 文件。我找到了 2 种方法来做到这一点,如此所述。

第一个是:

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. 我发现这个线程让我非常难过,但是我构建了一些 HTML 视频播放器来播放来自 S# 的流式视频,这是怎么回事?
  3. 读了一下,发现可能是因为 h264 格式,最后才发送元数据。这是正确的吗?将它转换为另一种格式会解决它吗?
  4. 所有的 flash-streaming 教程都假设我使用 RTMP 协议存储我的视频,阅读了一下,发现我可以在 Amazon Web Services 上使用 Adob​​e Media Server 5。我一定要吗?是否有免费的解决方案或闪存只能流式传输此协议?

谢谢。

4

2 回答 2

0

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

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

于 2012-08-15T11:21:04.987 回答
0

对于您的两种方法:

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

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

于 2012-08-14T17:03:57.800 回答