【发布时间】:2009-07-06 21:36:21
【问题描述】:
我已将视频加载到 FLVPlayback 组件中,我正在寻找一种方法来获取总时间和到目前为止播放的时间并将它们输出到两个文本字段,以便最终结果看起来像“00: 12/00:50”。
现在我正在通过组件检查器定义视频,但我最终希望也通过 actionscript 来定义这一点。任何提示将不胜感激。
【问题讨论】:
标签: flash video streaming timestamp
我已将视频加载到 FLVPlayback 组件中,我正在寻找一种方法来获取总时间和到目前为止播放的时间并将它们输出到两个文本字段,以便最终结果看起来像“00: 12/00:50”。
现在我正在通过组件检查器定义视频,但我最终希望也通过 actionscript 来定义这一点。任何提示将不胜感激。
【问题讨论】:
标签: flash video streaming timestamp
您可以在这里找到时间: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#playheadTime
这里: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#totalTime
还有一个定期触发的事件,因此您可以轻松更新时间: http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/video/FLVPlayback.html#event:playheadUpdate
编辑:更新链接
【讨论】:
获取时间:
flvPlayer.playheadTime;// 给你当前的视频位置关于格式:
公共静态函数 formatTime(time:Number, detailLevel:uint = 2):String { var intTime:uint = Math.floor(time); var hours:uint = Math.floor(intTime/ 3600); var minutes:uint = (intTime - (hours*3600))/60; var seconds:uint = intTime - (小时*3600) - (分钟* 60); var hourString:String = detailLevel == HOURS ?小时 + ":":""; var minuteString:String = detailLevel >= MINUTES ? ((detailLevel == HOURS && minutes = MINUTES)) ? "0":"") + 秒; 返回小时字符串 + 分钟字符串 + 秒字符串; }【讨论】:
我知道这是一个老问题 - 但我一直在寻找一段时间并没有找到答案。
如果您使用的是 FLVPlayback 组件,那么您仍然可以使用 MetadataEvent 来获取嵌入在 FLV/F4V 文件中的元数据。 我通过 AS3 创建了一个 FLVPlayback 实例,监听了 MedataEvent.METADATA_RECEIVED 事件,然后访问了事件返回的 info 属性。在代码中,它看起来像这样:
package
{
import fl.video.FLVPlayback; // you will need to drag the component to the stage, then delete it. This puts some stuff in the library and now you can access the class
import fl.video.MetadataEvent;
import flash.display.MovieClip;
public class flvTest extends MovieClip
{
private var inputURL:String = "./test.flv"; // change this to the location of your FLV/F4V
private var player:FLVPlayback;
public function flvTest():void
{
player = new FLVPlayback();
// set x,y,width,height values if you want
player.autoRewind = true; // I use this so when you press stop, it goes to the first frame
player.load( inputURL ); // you can use load() or source=
player.addEventListener( MetadataEvent.METADATA_RECEIVED, getMetaFromFLV );
addChild( player );
}
private var getMetaFromFLV( metadataEvent:MetadataEvent = null ):void
{
trace( "FLV Duration: " + metadataEvent.info.duration );
}
}
}
您显然需要一些播放器控件等,但此回复的关键是 MetadataEvent 部分。 事件返回的 info 属性包含嵌入在 FLV/F4V 视频文件中的所有元数据,因此您可以获得许多其他值。
(许多其他搜索和帖子仅解释了如何从 NetStream 和类似内容中获取元数据,这些元数据在连接到 Flash Media Server 时使用 - 而在这里,我们正在访问本地文件并且只是想要文件应该的数据已嵌入其中)。
我希望这对某人有帮助!
【讨论】: