コード例 #1
0
        public bool execute(ICustomRequest request)
        {
            bool response = false;
            MediaServicesCredentials xIdentity = new MediaServicesCredentials(request.MediaAccountName, request.MediaAccountKey);

            _MediaServicesContext = new CloudMediaContext(xIdentity);

            IAsset curretAsset = _MediaServicesContext.Assets.Where(a => a.Id == request.AssetId).FirstOrDefault();

            IAssetFile jsonFile = curretAsset.AssetFiles.Where(f => f.Name.EndsWith(".json")).FirstOrDefault();

            if (jsonFile != null)
            {
                ILocator locator = curretAsset.Locators.Where(l => l.Type == LocatorType.OnDemandOrigin).FirstOrDefault();
                if (locator == null)
                {
                    locator = CreateStreamingLocator(curretAsset, 365);
                }

                string jsonUrl     = locator.Path + "/" + jsonFile.Name;
                string callbackUrl = "https://www.google.cl/#q=";

                httpCallBack(callbackUrl, jsonUrl).Wait();

                response = true;
            }
            return(response);
        }
コード例 #2
0
        public override void HandleExecute(ChainRequest request)
        {
            myRequest   = (ButlerProcessRequest)request;
            blobManager = BlobManagerFactory.CreateBlobManager(myRequest.ProcessConfigConn);
            IjsonKeyValue stepConfig = new jsonKeyValue(StepConfiguration);

            //Lead External Step from DLL
            try
            {
                blobManager.parkingNewBinaries();
                myCustomStepExecution = buildCustomStep(stepConfig.Read("AssemblyName"), stepConfig.Read("TypeName"));
            }
            catch (Exception X)
            {
                sendError("MediaButlerCustomStep Loading error : " + X.Message);
            }

            //Transform ButlerProcessRequest to ICustomRequest
            myCustomRequest = buildRequest(myRequest);
            //Execute sync
            try
            {
                myCustomStepExecution.execute(myCustomRequest);

                //UPdate myRequest
                myRequest.AssetId = myCustomRequest.AssetId;
            }
            catch (Exception X)
            {
                sendError("MediaButlerCustomStep Execute error " + X.Message);
            }
            //Update status
            UpdateProcessStatus(myRequest, "Finish Custome Execution");
        }
コード例 #3
0
        public bool execute(ICustomRequest request)
        {
            var    _MediaServicesContext = new CloudMediaContext(request.MediaAccountName, request.MediaAccountKey);
            IAsset asset = (from m in _MediaServicesContext.Assets select m).Where(m => m.Id == request.AssetId).FirstOrDefault();

            CopyCaptions(asset, asset.ParentAssets.FirstOrDefault());
            request.AssetId = asset.ParentAssets.FirstOrDefault().Id;
            asset.Delete();
            return(true);
        }
コード例 #4
0
 public bool execute(ICustomRequest request)
 {
     myRequest      = request;
     storageAccount = CloudStorageAccount.Parse(myRequest.ProcessConfigConn);
     blobClient     = storageAccount.CreateCloudBlobClient();
     container      = blobClient.GetContainerReference(myRequest.ProcessTypeId);
     if (CheckSw())
     {
         Trace.TraceWarning("Another Process Running, abort");
         Information("Start Stop");
         Stop();
     }
     else
     {
         Information("Start process");
         CloudBlockBlob blockBlob = container.GetBlockBlobReference("track/" + request.MediaAccountName);
         blockBlob.UploadText(request.ProcessInstanceId);
         Start();
     }
     return(true);
 }
コード例 #5
0
 protected override void Initialize(RequestContext requestContext)
 {
     base.Initialize(requestContext);
     _customRequest = new CustomRequest(requestContext.HttpContext.Request);
 }
コード例 #6
0
 public BroadcastController(IClient client, IPhoneNumbers phoneNumbers, ICustomRequest customRequest = null)
 {
     _client        = client;
     _phoneNumbers  = phoneNumbers;
     _customRequest = customRequest;
 }
コード例 #7
0
 public RecordingsController(IClient client, IPhoneNumbers phoneNumbers, ICustomRequest customRequest = null)
 {
     _client = client;
     _phoneNumbers = phoneNumbers;
     _customRequest = customRequest;
 }
コード例 #8
0
 protected override void Initialize(RequestContext requestContext)
 {
     base.Initialize(requestContext);
     _customRequest = new CustomRequest(requestContext.HttpContext.Request);
 }
コード例 #9
0
 public RecordingsController(IClient client, IPhoneNumbers phoneNumbers, ICustomRequest customRequest = null)
 {
     _client        = client;
     _phoneNumbers  = phoneNumbers;
     _customRequest = customRequest;
 }
コード例 #10
0
        public bool execute(ICustomRequest request)
        {
            bool response = true;
            MediaServicesCredentials xIdentity = new MediaServicesCredentials(request.MediaAccountName, request.MediaAccountKey);

            _MediaServicesContext = new CloudMediaContext(xIdentity);

            IJob job = _MediaServicesContext.Jobs.Create("Video Thumbnail Job");

            string MediaProcessorName = "Azure Media Video Thumbnails";

            var processor = GetLatestMediaProcessorByName(MediaProcessorName);

            IAsset curretAsset = _MediaServicesContext.Assets.Where(a => a.Id == request.AssetId).FirstOrDefault();

            IAsset video360 = _MediaServicesContext.Assets.Create(curretAsset.Name.ToString() + " 360", AssetCreationOptions.None);

            List <IAssetFile> filesToCopy;

            filesToCopy = GetFiles(curretAsset, "360_500.mp4");

            CopyAssetFiles(video360, filesToCopy);

            String configuration = "{\"version\":\"1.0\",\"options\":{\"outputAudio\" : \"false\", \"maxMotionThumbnailDurationInSecs\": \"10\", \"fadeInFadeOut\" : \"false\" }}";

            // Create a task with the encoding details, using a string preset.
            ITask task = job.Tasks.AddNew("My Video Thumbnail Task " + curretAsset.Id.ToString(),
                                          processor,
                                          configuration,
                                          TaskOptions.None);

            // Specify the input asset.
            task.InputAssets.Add(video360);

            // Specify the output asset.

            task.OutputAssets.AddNew(curretAsset.Id.ToString() + " Summarized", AssetCreationOptions.None);

            // Use the following event handler to check job progress.
            job.StateChanged += new EventHandler <JobStateChangedEventArgs>(StateChanged);

            // Launch the job.
            job.Submit();

            // Check job execution and wait for job to finish.
            Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None);

            progressJobTask.Wait();

            // If job state is Error, the event handling
            // method for job progress should log errors.  Here we check
            // for error state and exit if needed.
            if (job.State == JobState.Error)
            {
                ErrorDetail error = job.Tasks.First().ErrorDetails.First();
                Console.WriteLine(string.Format("Error: {0}. {1}",
                                                error.Code,
                                                error.Message));
                response = false;
            }

            IAsset summarizedAsset = _MediaServicesContext.Assets.Where(a => a.Name == curretAsset.Id.ToString() + " Summarized").FirstOrDefault();

            List <IAssetFile> filesToCopy2;

            filesToCopy2 = GetFiles(summarizedAsset, ".mp4");

            CopyAssetFiles(curretAsset, filesToCopy2);

            video360.Delete();
            summarizedAsset.Delete();

            return(response);
        }
コード例 #11
0
 public BroadcastController(IClient client, IPhoneNumbers phoneNumbers, ICustomRequest customRequest = null)
 {
     _client = client;
     _phoneNumbers = phoneNumbers;
     _customRequest = customRequest;
 }