Пример #1
0
 private function startDvrs()
 {
     $liveStreamModel = $this->liveStream;
     if (is_null($liveStreamModel)) {
         // could be null if just external stream on external site
         return;
     }
     // there shouldn't already be one in progress but clear anyway to be sure
     $this->dvrLiveStreamUris()->delete();
     foreach ($liveStreamModel->liveStreamUris as $uriModel) {
         $enabled = (bool) $uriModel->enabled;
         $uriForDvrBridgeService = (bool) $uriModel->dvr_bridge_service_uri;
         if ($enabled && $uriForDvrBridgeService) {
             $dvrLiveStreamUriModel = new DvrLiveStreamUri();
             $dvrLiveStreamUriModel->liveStreamUri()->associate($uriModel);
             $dvrLiveStreamUriModel->mediaItemLiveStream()->associate($this);
             $this->dvrLiveStreamUris()->save($dvrLiveStreamUriModel);
             $responseInfo = self::makeDvrBridgeServiceRequest($uriModel->uri, "START", $dvrLiveStreamUriModel->id);
             if ($responseInfo["statusCode"] === 200 && !is_null($responseInfo['data']) && !is_null($responseInfo['data']['url'])) {
                 // success. dvr has started
                 // add url to dvr_live_stream_uris entry
                 $dvrLiveStreamUriModel->uri = $responseInfo['data']['url'];
                 $dvrLiveStreamUriModel->save();
             } else {
                 $dvrLiveStreamUriModel->delete();
             }
         }
     }
     // there may be new domains now from the urls retrieved from the dvr bridge services
     Cache::forget("liveStreamDomains");
 }