加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

用AS3编写的具有将多段视频连起来播放的 flash视频播放器---003

发布时间:2020-12-15 17:44:26 所属栏目:百科 来源:网络整理
导读:此次通过使用开源的flash视频播放器源码来实现视频连起来的效果,先引用一下该开源项目描述: f4Player是一个开源的Flash视频播放器,可以播放.fly、.f4v和.mp4等文件。整个播放器只有8kb左右,拥有一个可更换皮肤的界面。支持边播放,边下载和全屏播放。 它

此次通过使用开源的flash视频播放器源码来实现视频连起来的效果,先引用一下该开源项目描述:

f4Player是一个开源的Flash视频播放器,可以播放.fly、.f4v和.mp4等文件。整个播放器只有8kb左右,拥有一个可更换皮肤的界面。支持边播放,边下载和全屏播放。


它的地址是:这里

下载地址是:这里

最新版本:这里

现在时间已经很晚了,仅仅总结一下视频连接起来播放效果的一个需要计算的地方,算法比较简单,仅仅是个高中生的知识:

画个图总结一下:

【图1】

首先介绍一下目的:

看图1,用来表示由三段视频组成的整体视频,三段视频的结束的时间位置分别为:L0,L1,L2,而三段视频的时间也就是L0,L1-L0,L2-L1,X1是相对于最左边的起始点的位置,而不是相对于第二段视频起始点的位置,当前视频播放到了X2位置,此时我想点击X1使它播放X1相对于第二段视频的位置的视频,怎么办?

由于使用的事件中,

var playingBarEvent:Function = function(e:MouseEvent):void
{
		var point:Number = e.localX * info.playing;
....................
只有e.localX 是用来描述点击的位置,那么先介绍一下它表示的是什么:

e.localX 表示在已经播放的长度为X2的视频中,X1所占的比例,也就是e.localX =?X1 / X2。而想要得到相对于整体的X1,对应的相对于第二段视频的起始点位置Y,怎么求?

在Player中有个函数:

private function Info():Object {
	var playing:Number = ( ns.time / duration ).toFixed(2);
	return {
				'width': videoWidth,'height': videoHeight,'total': ns.bytesTotal,'loaded': ns.bytesLoaded,'progress': ( ns.bytesLoaded / ns.bytesTotal ).toFixed(2),'duration': duration,'time': ns.time,'playing': ( playing > 1 ? 1 : playing ),'status': status
	};
简单点描述是:

playing= ( ns.time / duration );

等价于:playing ?= (X2 - ?L0 ) /(L1 - L0)

进而得到:

X2 =?playing ?*(L1 - L0) + L0
而由e.localX =?X1 / X2得到:

X1 =?e.localX * X2 =??e.localX *(?playing ?*(L1 - L0) + L0)

本源码中还有个百分比,所以加上后就是:

X1 = ?e.localX *(?playing ?*(L1 - L0) + L0)?/ 100;

那么

Y = X1 - L0 =?e.localX *( playing ?*(L1 - L0) + L0) /100- L0

这样想要点击X1点达到点击第二段视频对应点的效果就可以:

var seekpoint:Number = e.localX*(info.playing*videotimes[_videoCurrentIndex]+_videoCurrentStartTime)/100;//**********************
				

控制事件为:

player.Seek(seekpoint);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读