做了一个视频教程的网站,视频是管理员在后台上传后通过FFMPEG在后台自动转成FLV格式的文件,视频播放用的是flash播放器。与视频一起的有个文字教程,现在想拖动视频,文字教程也显示到对应的位置,拖动文字教程的话视频也自动跳到对应的时间点。总的来说就跟Google音乐播放效果差不多。
以前也开过一贴,但是没有个人说个具体方法来。很郁闷。
这个帖子一天加100分。无论解决与否到1000分结贴。分数可能对高手来说不算什么。但是我开1000分只是想说明非常想这种技术是怎样实现的,并不是认为分数是万能的。
希望高手能够指教。在下感激不尽。谢谢、

解决方案 »

  1.   

    通过FLASH制作视频,实现flash编程,与文件同步。
      

  2.   

    FLASH ? 
    没这么细想过 - -
      

  3.   

    是可行的,在播放器相同间隔不同的时间点上,拖动时触发网页跳转动作(网页要变换的做成Ajax,或事先已读进来)相同的,在网页上也一样,只是不同的文章段,给播放器传不同的参数。希望有所启发。
      

  4.   

    我给楼主一个思路希望楼主能注意一下,千千静听的做法。千千静听的歌词是一个独立的文件,与音频文件是无关的,而且是允许用户来操作的,如何操作呢?歌是有时间段和时间点的,如果想让歌词和音频对应,如何对应呢?这样,设置歌词显示的时间点,和消失的时间点,在这段时间内,歌词显示,或者处在滚动条的中间位置。对于文字字幕的设定,一般可以采用如是思路。所以说,视频文件和文字字幕是可以不用关联的。它们可以通过时间点来联系起来,而这个时间点的联系,是人为指定的。其实,像MPEG等带字幕的电影文件之类的,其字幕的设定不都是如是做法么?只不过,像MPEG这种,把字幕嵌进视频文件中罢了。千千静听就是如是做法,你下你的音频文件,然后再去下歌词文件,然后对歌词文件设时间点,然后听歌便是。歌词才不管你音频唱到哪里,我只按我的时间设定显示我的歌词罢了。你操作你的视频到某一时间点,文字字幕也就滚动到指定的时间点。如是而已。
      

  5.   

    请问各位,可否提供一个新浪网的FLASH视频制作软件(他们的FLASH视频较清析)
      

  6.   


    大部分的视频网用的都是FFMEPG或mencoder吧。
      

  7.   


    不嫌累的话,对照着视频,一句一句地设置文本时间。跳转很容易,如果像FLV这样的视频文件,你可以跳转成功的话,那么视频的时间点你是可以得到的,只需要那个时间点便可以。
    如果flv文件不支持跳转的话,那就是流式文件,无法跳转的。
      

  8.   

    我也觉得这个和歌词的处理方式比较接近;
    你首先要自定义一个xml的文件,当然也可以集成在你想要的那个教程文件上,必须是文本的!
    然后根据你对xml里面的行为进行定义,有点像时间轴的功能;
    然后根据xml你实现你的代码,和flash进行集成,这个可能是一个难点;
    我估计这方面的思路是不会错的,你最后公开的是你制作教程的一个xml标准,甚至制作成可视化的教程制作工具;
    难点就是在用户的操作性等小问题上会有很多的细节需要处理
      

  9.   

    另外因为你使用xml来进行操作的,所以你是在html里面还是Flash里面实现展现就很灵活了;
    就和你上面说的,你不知道flash播放器的时间点怎么和html交互,那就在flash里面交互好了,flash里面总会得到这个时间点的
      

  10.   

    请问各位,可否提供一个新浪网的FLASH视频制作软件(他们的FLASH视频较清析)
      

  11.   

    http://www.icast.com.cn/
    新浪是用的这公司的
      

  12.   

    silverlight可以实现"想拖动视频,文字教程也显示到对应的位置,拖动文字教程的话视频也自动跳到对应的时间点".也可以参照千千静听,可以去网上下载类似的源码C#的
    (http://download.csdn.net/source/918414)这个可以看看.至于播放时支持的格式,是解码器处理的,可以去下了能解析FLV的格式解码器装在自己的播放器里就可以了,祝你好运~
      

  13.   

    你自己做个flash播放器,或者找专门做播放器的公司做。
    这个问题也困扰我好长时间。有机会交流交流
      

  14.   

    vegas 可以实现,不过挺费时间的。然后用js读标记
      

  15.   

     这个还真没弄过
    前段时间用flex弄过一个音乐播放器 虽然没有弄歌词功能
     不过我想 使用flex将视频播放器和文字教程弄成一个flash
    捕捉文字教程位置,根据百分比去设置视频的播放位置 反之同样
    当然了 播放视频你要自己去写了 flex中有这个组件的
    我想应该可以实现
     跟音乐播放器的拖动进度条一个道理
      

  16.   

    可以通过微软提供 MediaInfo.dll 来获取视频的信息,包括长度,画面大小等信息。
      

  17.   

    新开了一贴http://topic.csdn.net/u/20090521/11/0b1623b9-76fd-4af0-a376-375497801fdb.html
      

  18.   

    两部分功能集成在一起
    根据视频的播放时间,得到播放时间与播放进度条值间的对应关系,并通过计算得到播放进度条与文字教程进度条间的值对应关系(换算)
    如二者关系是1:2,则播放进度条的值为10(不是播放时间)时,则文字教程滚动到20的位置,
    反过来,也行,此时根据播放时间与播放进度条值间的对应关系得到播放位置对FALSH知道不多,希望能帮上
      

  19.   

    没做过FLASH编程,
    不过我觉得至少要做到两点:
    一、取得FLASH的时间轴,这个时间轴应该是固定的,所以应该在FLV生成的时候读出来,并且随着网页的打开读到js中
    二、取得FLASH当前时间点,这个我不知道有什么办法可以从FLV中读出来,只要有办法用js读,那么就可以设置成每1秒读一次
    这个链接里有关于js与flash交互的技术文章http://www.blogjava.net/mxx/archive/2007/06/22/125918.html这样根据一定的算法来控制FLV时间轴与文字内容滚动的关系应该可以实现FLV与页面文本滚动的同步。
      

  20.   

    从楼上那个链接里考出来的
    附可控制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 
    似乎这两个方法就可以取得总帧和当前帧,这样就可以编写一定的算法来保持同步啊?
      

  21.   

    1, 获得视频的总时长time
    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)函数定位视频到指定时刻,以秒为单位  
      

  22.   

    感谢大家的热心回复~~
    由于一个帖子只能加一次分,已经重开了一贴,大家可以到另外个帖子讨论下。谢谢了。
    http://topic.csdn.net/u/20090521/11/0b1623b9-76fd-4af0-a376-375497801fdb.html
      

  23.   

    我就知道silverlight这个了  不是很熟悉