所以我们有flv文件,例如我们用mx:vidodisplay来播放它。如何获取我们目前正在使用的流帧?如何获取当前正在播放的视频文件的当前帧?
2
A
回答
2
可以查询最近的关键帧的流元数据的当前时间
UPD
创建你需要处理它的onMetaData
调用流时:
private var metaInfo: Object;
private function initStream():void{ stream = new NetStream(conn); stream.bufferTime = 5; stream.addEventListener(NetStatusEvent.NET_STATUS, onStatus); stream.client = new Object(); stream.client.onMetaData = onMetaData;/*this is what you need*/ video.attachNetStream(stream); } private function onMetaData(info:Object):void { metaInfo = info; var tmpstr:String = ''; for(var s:String in info){ var tstr:String = s + ' = ' + info[s] + '\n'; tmpstr += tstr.indexOf('object') == -1 ? tstr : ''; for(var a:String in info[s]){ var ttstr:String = s + ':' + a + ' = ' + info[s][a] + '\n'; tmpstr += ttstr.indexOf('object') == -1 ? ttstr : ''; for(var c:String in info[s][a]){ var tttstr:String = s + ':' + a + ':' + c + ' = ' + info[s][a][c] + '\n'; tmpstr += tttstr.indexOf('object') == -1 ? tttstr : ''; } } } trace(tmpstr); }
在此跟踪您会看到流的元数据是否包含以下项目:
搜索点:93:偏移量= 10342550
搜索点数:93:tim E = 165.799
或也许:
关键帧:次= 0,0.48,0.96,1.44,1.92,2.4,2.88,3.36,3.84,4.32,4.8,5.28,5.76,6.24
关键帧:filepositions = 1063, 95174,136998,176043,209542,239148,271062,302006,331724,363948,395039,427503,456317,483313
这取决于编码器设置,如果你的元数据都有这种(metadata['keyframes']
,metadata['seekpoints']
等)的任何对象,你可以执行以下操作:
for (var i:int = 0; i < metaInfo['keyframes']['times'].length; i++) {
if (stream.time < metaInfo['keyframes']['times'][i]) {
var keyFrameNum: int = (metaInfo['keyframes']['times'][i] - stream.time < stream.time - metaInfo['keyframes']['times'][i - 1]) ? i : i - 1;
}
}
0
我做了一个静态类来将netstream元数据对象解析为as3对象。您可以使用JSON.stringify(parse(info))来检查信息中的所有属性。这个班只是草稿执行。可能是里面的一些错误。
public class NetStreamMetaData
{
public static function parse(object:Object, isArray:Boolean = false):Object{
var ret:Object = {};
if(isArray)
ret = [];
var k:String;
for(k in object){
if(isNaN(Number(k))){
if(object[k] is Array){
ret[k] = parse(object[k], true);
}else{
ret[k] = object[k];
}
}else{
if(object[k] is Array){
ret.push(parse(object[k], false));
}else{
ret.push(object[k]);
}
}
}
return ret;
}
}
相关问题
- 1. 获取当前正在播放的视频的帧频
- 2. 如何使用AVFoundation获取在iOS中播放的视频的当前帧?
- 3. 如何获取当前播放视频的当前时间?从VLC Player for Android
- 4. 获取当前播放音频的AVPlayer
- 5. 视频html5:如何获取当前播放的源
- 6. 捕获视频播放器中的当前帧
- 7. 如何获取正在播放的视频的当前位置? C#,WPF,MediaPlayer类
- 8. Wowza直播视频 - 如何获取当前视频的名称
- 9. 如何拍摄当前正在播放的视频?
- 10. VLC-QT获取当前视频文件的帧率
- 11. 如何获得当前播放的视频中的UIWebView
- 12. Quicktime视频:隐藏控件并获取当前播放时间
- 13. 如何获取当前帧?
- 14. 获取多个视频的当前播放时间
- 15. 获取当前播放视频的标题
- 16. 获取AVPlayer播放视频的当前时间ios
- 17. 获取当前播放类型的HTML5视频标签
- 18. 如何在XBMC中获取当前正在播放的项目?
- 19. 如何检索当前播放HTML5音频播放器的当前时间? (mediaelement.js)
- 20. 如何从相机获取当前帧(视频捕获设备)
- 21. 如何获取其他应用的当前正在播放的音频
- 22. C#如何获取WMP当前正在播放的歌曲文件路径?
- 23. 如何暂停或停止当前正在播放的音频?
- 24. 捕获当前正在播放HTML5的音频?
- 25. 在Android中获取当前播放音频的元数据
- 26. 如何从网页上的嵌入式视频获取当前播放时间?
- 27. 如何在JTextField中显示视频文件的当前播放时间?
- 28. Youtube API:查看当前正在播放哪个视频ID
- 29. 如何在Vista Media Center中获取当前播放文件的文件名?
- 30. 如何使用JavaScript和HTML5播放器更改当前正在播放的YouTube视频的播放速度?
以及如何做这样的事情? – Rella 2010-12-06 15:14:55