怎么获取flv文件的高宽

找网上搜了一段,利用回调函数获取的

client指定对其调用回调方法以处理流或 FLV 文件数据的对象。默认对象为 this,将创建 NetStream 对象。如果将 client 属性设置为另一个对象,则将对该对象调用回调方法。NetStream.client 对象可以调用以下函数并接收关联的数据对象:onCuePoint()、onImageData()、onMetaData()、onPlayStatus()、onTextData() 和 onXMPData()。

例 :

var video:Video = new Video();
this.addChild(video);

var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
ns.addEventListener(NetStatusEvent.NET_STATUS, netStatus_ns);
function netStatus_ns(obj:Object):void
{
    trace(obj.info.code);
    /*结果:
    NetStream.Buffer.Empty
    NetStream.Buffer.Full*/
}
ns.play("ffTrailer.flv");

var meta:Object = new Object();
meta.onMetaData = function(meta:Object)
{
    for (var i:String in meta)
    {
        trace("meta 属性" + i +": 值" + meta[i]);
        /*结果:
        meta 属性height: 值240
        meta 属性canSeekToEnd: 值true
        meta 属性audiodatarate: 值96
        meta 属性width: 值320
        meta 属性audiodelay: 值0.038
        meta 属性duration: 值44.251
        meta 属性videodatarate: 值700
        meta 属性framerate: 值29.939987182617188
        meta 属性videocodecid: 值4
        meta 属性audiocodecid: 值2*/
    }
}
ns.client = meta;
video.attachNetStream(ns);








问题
我想改变视频的显示尺寸
解决办法
设置Video对象的width和height属性,如果要根据视频编码时的尺寸播放,可使用videoWidth和
videoHeight值
讨论
视频尺寸是由Video对象的width和heigh属性决定的。当构造Video对象时可指定宽度和高度,例
如,初始化视频尺寸为160x120:
var video:Video = new Video(160, 120);
通过width和height属性可以任意改变尺寸大小,如:
video.width = 320;
video.height = 240;
Video类还定义了两个只读属性,videoWidth和videoHeight,他们返回视频编码时的尺寸,可以
用这两个属性设置width和height属性:
video.width = video.videoWidth;
video.height = video.videoHeight;
需要注意的是,flv还没下载之前这两个属性是不可用的,因此必须等两个属性可用时才可,我
们可监听netStatus事件达到目的:
videoStream.addEventListener(NetStatusEvent.NET_STATUS, onStatus);
private function onStatus(event:NetStatusEvent):void {
if(_video.videoWidth > 0 && _video.width != _video.videoWidth) {
_video.width = _video.videoWidth;
_video.height = _video.videoHeight;
}
}





onMetaData 是一种办法, 如果视频没有元数据, 那就得侦测videoWidth和videoHeight, 如果不为0, 那就是视频的高宽了

你可能感兴趣的:(.net)