做了一个视频教程的网站,视频是管理员在后台上传后通过FFMPEG在后台自动转成FLV格式的文件,视频播放用的是flash播放器。与视频一起的有个文字教程,现在想拖动视频,文字教程也显示到对应的位置,拖动文字教程的话视频也自动跳到对应的时间点。总的来说就跟Google音乐播放效果差不多。
以前也开过一贴,但是没有个人说个具体方法来。很郁闷。
这个帖子一天加100分。无论解决与否到1000分结贴。分数可能对高手来说不算什么。但是我开1000分只是想说明非常想这种技术是怎样实现的,并不是认为分数是万能的。
希望高手能够指教。在下感激不尽。谢谢、
以前也开过一贴,但是没有个人说个具体方法来。很郁闷。
这个帖子一天加100分。无论解决与否到1000分结贴。分数可能对高手来说不算什么。但是我开1000分只是想说明非常想这种技术是怎样实现的,并不是认为分数是万能的。
希望高手能够指教。在下感激不尽。谢谢、
解决方案 »
- 图片和文字分服务器的问题??高分,求高手过来帮我解答一下?
- 主机带宽占用100%是怎么回事?
- 偶用了textbox.Text.Replace(" "," ").Replace("\r","<br/>");却还是无法显示出回车
- 问一个比较菜得问题
- 请教:关于将页面上显示的DataGrid数据生成Excel文本的问题
- 打印的问题
- 关于页面静态化更新索引的问题!
- ASP.net 无权向创建文件夹删除文件夹(急急!!)
- 各位搞.net的朋友们,中秋节快!!!节日散分呀
- 急!!!急!!!有关动态生成的button控件的click事件
- asp.net 文件下载问题
- 如何用ASP.NET接收电子邮件?
没这么细想过 - -
大部分的视频网用的都是FFMEPG或mencoder吧。
不嫌累的话,对照着视频,一句一句地设置文本时间。跳转很容易,如果像FLV这样的视频文件,你可以跳转成功的话,那么视频的时间点你是可以得到的,只需要那个时间点便可以。
如果flv文件不支持跳转的话,那就是流式文件,无法跳转的。
你首先要自定义一个xml的文件,当然也可以集成在你想要的那个教程文件上,必须是文本的!
然后根据你对xml里面的行为进行定义,有点像时间轴的功能;
然后根据xml你实现你的代码,和flash进行集成,这个可能是一个难点;
我估计这方面的思路是不会错的,你最后公开的是你制作教程的一个xml标准,甚至制作成可视化的教程制作工具;
难点就是在用户的操作性等小问题上会有很多的细节需要处理
就和你上面说的,你不知道flash播放器的时间点怎么和html交互,那就在flash里面交互好了,flash里面总会得到这个时间点的
新浪是用的这公司的
(http://download.csdn.net/source/918414)这个可以看看.至于播放时支持的格式,是解码器处理的,可以去下了能解析FLV的格式解码器装在自己的播放器里就可以了,祝你好运~
这个问题也困扰我好长时间。有机会交流交流
前段时间用flex弄过一个音乐播放器 虽然没有弄歌词功能
不过我想 使用flex将视频播放器和文字教程弄成一个flash
捕捉文字教程位置,根据百分比去设置视频的播放位置 反之同样
当然了 播放视频你要自己去写了 flex中有这个组件的
我想应该可以实现
跟音乐播放器的拖动进度条一个道理
根据视频的播放时间,得到播放时间与播放进度条值间的对应关系,并通过计算得到播放进度条与文字教程进度条间的值对应关系(换算)
如二者关系是1:2,则播放进度条的值为10(不是播放时间)时,则文字教程滚动到20的位置,
反过来,也行,此时根据播放时间与播放进度条值间的对应关系得到播放位置对FALSH知道不多,希望能帮上
不过我觉得至少要做到两点:
一、取得FLASH的时间轴,这个时间轴应该是固定的,所以应该在FLV生成的时候读出来,并且随着网页的打开读到js中
二、取得FLASH当前时间点,这个我不知道有什么办法可以从FLV中读出来,只要有办法用js读,那么就可以设置成每1秒读一次
这个链接里有关于js与flash交互的技术文章http://www.blogjava.net/mxx/archive/2007/06/22/125918.html这样根据一定的算法来控制FLV时间轴与文字内容滚动的关系应该可以实现FLV与页面文本滚动的同步。
附可控制Flash Player的Javascript方法一览表:Play() ---------------------------------------- 播放动画
StopPlay()------------------------------------停止动画
IsPlaying()----------------------------------- 动画是否正在播放
GotoFrame(frame_number)---------------- 跳转到某帧
TotalFrames()------------------------------- 获取动画总帧数
CurrentFrame()------------------------------回传当前动画所在帧数-1
Rewind()-------------------------------------使动画返回第一帧
SetZoomRect(left,top,right,buttom)-------放大指定区域
Zoom(percent)------------------------------改变动画大小
Pan(x_position,y_position,unit)------------使动画在x,y方向上平移
PercentLoaded()----------------------------返回动画被载入的百分比
LoadMovie(level_number,path)----------- 加载动画
TGotoFrame(movie_clip,frame_number)- movie_clip跳转到指定帧数
TGotoLabel(movie_clip,label_name)------ movie_clip跳转到指定标签
TCurrentFrame(movie_clip)--------------- 回传movie_clip当前帧-1
TCurrentLabel(movie_clip)-----------------回传movie_clip当前标签
TPlay(movie_clip)---------------------------播放movie_clip
TStopPlay(movie_clip)----------------------停止movie_clip的播放
GetVariable(variable_name)-----------------获取变量
SetVariable(variable_name,value)-----------变量赋值
TCallFrame(movie_clip,frame_number)---call指定帧上的action
TCallLabel(movie_clip,label)----------------call指定标签上的action
TGetProperty(movie_clip,property)--------获取movie_clip的指定属性
TSetProperty(movie_clip,property,number)-设置movie_clip的指定属性
flash与javascript交互演示:http://www.v-ec.com/dh20156/code/jsflash/fj.htm
javascript与flash交互演示:http://www.v-ec.com/dh20156/code/jsflash/jf.htmTotalFrames()------------------------------- 获取动画总帧数
CurrentFrame()------------------------------回传当前动画所在帧数-1
似乎这两个方法就可以取得总帧和当前帧,这样就可以编写一定的算法来保持同步啊?
2, 获得文字框的总高度height(假设宽度是固定的)
3, 设文字框滚动条的当前位置为current_h, 与之对应的当前视频播放到的时刻为current_t, 那么二者间的关系就是current_h/height=current_t/time.
4, 编程实现current_h和 current_t之间的同步 另外,控制flv视频播放与控制动画播放是不一样的,91楼的那些函数是不适用的。假设你用的是flash8自带的FLVPlayback组件来播放flv,那么可以用该组件的totalTime属性获得视频总时长,seek(timeSecond)函数定位视频到指定时刻,以秒为单位
由于一个帖子只能加一次分,已经重开了一贴,大家可以到另外个帖子讨论下。谢谢了。
http://topic.csdn.net/u/20090521/11/0b1623b9-76fd-4af0-a376-375497801fdb.html