【问题标题】:TotalTime of a stream - Video Flash Player AS3流的 TotalTime - Video Flash Player AS3
【发布时间】:2013-11-29 09:27:43
【问题描述】:

早安,

我正在开发视频 Flash 播放器以进行流式传输。我想要做的是显示流的总时间,而不是用户观看流的时间。 我现在有一个问题,当我暂停然后播放视频时,当前时间会重新开始。 您有什么想法可以解决我的问题并解决另一个问题吗? :)

**我正在使用 NetStream

【问题讨论】:

    标签: actionscript-3 flash timer stream netstream


    【解决方案1】:

    好的,对于第一个问题,您要做的是设置一个函数来接收视频的元数据并将该值保存在某个地方。

    首先,当您创建您的 NetStream 对象时,您需要将一个客户端添加到引用函数 onMetaData 的 NetStream。

    var ns:NetStream;   //your NetStream Object
    var client:Object = new Object(); //Create an Object that represents the client
    client.onMetaData = onMetaData; //reference the function that catches the MetaData of the Video
    ns.client = client;             //assign our client Object to the client property of the NetStream
                                    //Once MetaData is available, it'll call onMetaData with all of the information
    
    function onMetaData(metaData:Object):void
    {
        duration = metaData.duration;   //duration is the variable that is supposed to total length of the video
    }
    

    现在使用duration 值,您可以获得当前正在使用该 NetStream 对象播放的电影的总播放时间。


    您可以通过多种方式解决第二个问题,例如:

    • pause() 和 resume()
    • pause() 和 player('currentTime')

    只需保留一个名为 pause 的 Boolean 变量,用于跟踪视频当前是否正在播放。

    var paused:Boolean = false;  //assuming the video is currently playing
    var currentTime:Number = 0;  
    var button:Button;    //some kind of play/pause button
    button.addEventListener(MouseEvent.CLICK,onButtonClick);
    
    function onButtonClick(event:MouseEvent):void
    {
        if(paused)
        {
            paused = false;
            ns.resume();
            //ns.play(currentTime)   //this also works
        }
        else
        {
            paused = true;
            ns.pause();
            currentTime = ns.time;
        }
    }
    

    【讨论】:

      【解决方案2】:

      您必须从文件的元数据中提取信息。

      【讨论】:

        【解决方案3】:

        谢谢你的回答:)。

        DodgerThud,我今天早上就我的第二个问题尝试了你的解决方案。我试过你的解决方案,我得到了这个:持续时间:NaN。如果我理解得很好,我的问题是我没有流的元数据......

        if(isLiveStream == false) {
                    if(title == preroll || Number(duree) <= 0) {
                        duration=infoObject.duration+timeOffset;
                    } else {
                        duration=Number(duree);
                    }
                }
        

        这些行在 onMetaData 函数上。

        谢谢你帮助我。 祝你有美好的一天。

        【讨论】:

          猜你喜欢
          • 2011-03-24
          • 1970-01-01
          • 2014-08-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-12-14
          • 2015-05-11
          相关资源
          最近更新 更多