function update($forceRecreation = false)
 {
     $this->cache = array();
     foreach ($this->playlist as $_playlistitem) {
         //Die Cachedateien falls nötig neu generieren
         if ($forceRecreation || !file_exists($this->getCacheFileName($_playlistitem['filename'])) && !file_exists($this->getLockFileName($_playlistitem['filename']))) {
             $this->lock($_playlistitem['filename']);
             $_fh = fopen($this->getCacheFileName($_playlistitem['filename']), 'w');
             fwrite($_fh, '<? $cache = array(');
             $_flv = new CustomFLV($this->getFLVFileName($_playlistitem['filename']));
             $_position = 0;
             $_second = 0;
             while ($_position >= 0) {
                 $_position = $_flv->getFramePosition($_second * 1000);
                 if ($_position >= 0) {
                     fwrite($_fh, $_position . ', ');
                     $_second++;
                     //die scriptlaufzeit verlängern
                     set_time_limit(30);
                 }
             }
             fwrite($_fh, ');?>');
             fclose($_fh);
             $this->unlock($_playlistitem['filename']);
         }
         //Die Daten aus den Cachedateien auslesen
         if (file_exists($this->getCacheFileName($_playlistitem['filename']))) {
             include $this->getCacheFileName($_playlistitem['filename']);
             $this->cache[] = $cache;
         }
     }
 }
 function stream($video = "")
 {
     /*
     //aktuellen titel finden
     $currentTrack = count($this->playlist)-1;
     while(($currentTime < $this->playlist[$currentTrack]['starttime']) && ($currentTrack>0)){
     $currentTrack--;
     }
     
     //aktuelle sekunde des aktuellen titels herausfinden
     
     //aktuelle zeit - startzeit = laufzeit
     //laufzeit mod tracklänge = aktuelle position
     
     $runtime = $currentTime-$this->playlist[$currentTrack]['starttime'];
     $currentSecond = fmod($runtime,count($this->keyframecache->cache[$currentTrack]));
     
     $timeToRun = -1;
     //restlaufzeit für diesen titel berechnen
     if ((count($this->playlist)-1)>$currentTrack){
     $timeToRun = $this->playlist[$currentTrack+1]['starttime']-$currentTime;
     }
     $flv = new CustomFLV($this->getFLVFileName($this->playlist[$currentTrack]['filename']));
     $flv->setBrowserCaching(false);
     $flv->playFlv(1,$this->keyframecache->cache[$currentTrack][$currentSecond]);
     */
     if ($video == "") {
         $this->getPlaylistEntry($video, $nextVideoName, $nextVideoStartTime);
     }
     //		$fh = fopen('./tmp/test.log',w);
     //		fwrite($fh,strtotime("now").': Playing '.getConfigValue('videopath').$video);
     //		fclose($fh);
     //
     //		header("Content-Disposition: filename=".basename($video));
     //		header("Content-Type: video/x-flv");
     //		header("Content-Length: " .(string)filesize(getConfigValue('videopath').$video));
     //
     //        $fh = fopen(getConfigValue('videopath').$video,r);
     //        while (!feof($fh)){
     //			print(fread($fh, 1024));
     //        }
     //		fclose($fh);
     $flv = new CustomFLV(getConfigValue('videopath') . $video);
     //$flv->setBrowserCaching(false);
     $flv->playFlv();
 }