我正在使用FileReference类将flv上传到服务器。 在允许上传之前,是否可以检查flv长度而不是大小?
答案 0 :(得分:4)
您是单独定位Flash Player 10还是降低版本?因为较低版本的Flash播放器(9等)不允许上传SWF来读取文件的内容(除了creationDate,creator(文件的Macintosh创建者类型),modificationDate,name,size in bytes和type),所以你无法在这些球员身上做到这一点。
如果您仅定位FP10用户,则可以将[{3}} FLV加入SWF中的ByteArray
并
ByteArray
作为输入的FLV播放器 - 在SO中阅读load之后,似乎根本不可能。duration
属性。 this thread已经公开,但这并不容易。更新评论:
摘自FLV文件规范:
<强>调用onMetaData 强>
FLV文件可以包含带有“onMetaData”标记的元数据。各种流属性 通过NetStream.onMetaData属性可用于正在运行的ActionScript程序。 可用的属性因使用的软件而异。
常见属性包括:
duration
:一个DOUBLE,表示文件的总持续时间(以秒为单位)width
:指示视频宽度的DOUBLE(以像素为单位)height
:指示视频高度的DOUBLE(以像素为单位)videodatarate
:一个DOUBLE,表示以千比特/秒为单位的视频比特率framerate
:表示每秒帧数的DOUBLEvideocodecid
:一个DOUBLE,表示文件中使用的视频编解码器ID(请参阅“视频” 标签“在第8页上获取可用的CodecID值”audiosamplerate
:一个DOUBLE,表示音频流的频率 重放audiosamplesize
:表示单个音频样本分辨率的DOUBLEstereo
:指示数据是否为立体声的BOOLaudiocodecid
:一个DOUBLE,表示文件中使用的音频编解码器ID(请参阅“音频 标签“在第6页上获取可用的SoundFormat值”filesize
:一个DOUBLE,表示文件的总大小,以字节为单位
FLV文件可以包含元数据 - 它并不表示它将包含元数据。它还说可用的属性可能会根据用于创建FLV的软件而有所不同。所以我想不能保证(根据规格)duration
属性存在。也就是说,duration
是FLV的基本属性之一,可以安全地假设任何合理的软件都包含它。
答案 1 :(得分:1)
您可以使用Netstream.appendBytes将FileReference.data(在通话调用之前,在上传调用之前)提供给用于播放视频的NetStream。从那里,持续时间可以从元数据中获取,如该线程中的其他地方所述。请注意,此方法至少需要Flash Player 10。