2009-12-10 40 views

回答

4

您是针对Flash Player 10单独还是更低版本?由于较低版本的Flash播放器(9等)不允许上传的SWF读取文件内容(除创建日期,创建者(文件的Macintosh创建者类型),修改日期,名称,大小(字节和类型)),所以你无法在这些球员身上做到这一点。

如果你的目标仅仅FP10的用户,可以load的FLV到您的SWF一个ByteArray

  1. 使用FLV播放器播放,并宣读了球员的时间属性。但是我找不到一个以ByteArray作为输入的FLV播放器 - 在阅读完SO后的this thread后,似乎根本不可能。
  2. 解析FLV文件,并从其元数据中读取duration属性。 FLV file specification已开放,但这并不容易。

更新到注释:从FLV文件规范
摘录:

调用onMetaData
FLV文件可以包含有“调用onMetaData”标记的元数据。通过NetStream.onMetaData属性,运行的ActionScript程序可以使用各种流属性 。 可用的属性因使用的软件而异。
共同属性包括:

  • duration:一个DOUBLE指示文件的以秒计的总的持续时间
  • width:一个DOUBLE指示像素
  • height视频的宽度:一个DOUBLE指示以像素为单位的视频高度
  • videodatarate:一个DOUBLE表示以千比特/秒为单位的视频比特率
  • framerate:一个DOUBLE表示每秒钟
  • videocodecid帧数:一个DOUBLE指示文件中所使用的视频编解码器ID(参见第8页上的“视频 标签”为可用的CodecID标注值)
  • audiosamplerate:一个DOUBLE指示在该音频流是 重放
  • audiosamplesize频率:一个DOUBLE表示单一音频样本的分辨率
  • stereo:一个BOOL指示数据是否是立体声
  • audiocodecid :一个DOUBLE指示文件中所使用的音频编解码器ID(见第6页上的“音频 标签”为可用的SoundFormat值)
  • filesize:一个DOUBLE指示以字节为单位
的文件的总大小

FLV文件可以包含元数据 - 它不会说它将包含元数据。它还表示,可用的属性可能因用于创建FLV的软件而异。所以我想没有保证(根据规格)duration财产将存在。也就是说,duration是FLV的基本属性之一,假设任何合理的软件都会包含它,这将是安全的。

+0

非常感谢,帮助了很多。我想知道当长度的元数据不存在时他们是否可以成为案例。你有没有遇到过这种情况,或者我可以安全地假设数据总是可用的? – Chin 2009-12-10 09:41:05

+0

再次感谢您的帮助。如果你需要任何兼职flex或.net工作让我知道。 – Chin 2009-12-10 11:17:46

1

您可以使用Netstream.appendBytes在用于播放视频的NetStream中将FileReference.data(在呼叫上传之前的呼叫浏览之后)提供给NetStream。从那里,持续时间可以从元数据中获取,如本主题其他地方所述。请注意,此方法至少需要Flash Player 10。

相关问题