public ActionResult GetBlobs(int?Id, int?page, int?limit, string sortBy, string direction, CloudFile obj) { string searchStorageConnectionString = ""; string container = ""; try { if (obj.StorageAccount == "Asra Account") { searchStorageConnectionString = Asra; container = Default; } else if (obj.StorageAccount == "Joseph Account") { searchStorageConnectionString = Joseph; container = JosephContainer; } else { searchStorageConnectionString = RaviKotuwar; container = Default; } var records = new List <CloudFile>(); CloudStorageAccount storageAccount = CloudStorageAccount.Parse(searchStorageConnectionString); CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient(); CloudBlobContainer searchBlobContainer = cloudBlobClient.GetContainerReference(container); //searchBlobContainer.SetPermissionsAsync(new BlobContainerPermissions //{ // PublicAccess = BlobContainerPublicAccessType.Blob //}); // Get list of all blobs URLs which are stored inside container //IEnumerable<IListBlobItem> blobs = searchBlobContainer.ListBlobs().OrderByDescending().ToList(); var blobs = searchBlobContainer.ListBlobs().OfType <CloudBlockBlob>().OrderByDescending(m => m.Properties.LastModified).ToList(); var query = blobs.Select(p => new CloudFile { FileName = HttpUtility.UrlDecode(p.Uri.AbsoluteUri.ToString().Substring(p.Uri.AbsoluteUri.ToString().LastIndexOf("/") + 1)), URL = p.Uri.AbsoluteUri, StartTime = p.Properties.LastModified.Value.UtcDateTime }); if (!string.IsNullOrWhiteSpace(obj.FileName)) { query = query.Where(q => q.FileName.ToLower().Contains(obj.FileName.ToLower())); } var total = query.Count(); if (page.HasValue && limit.HasValue) { int start = (page.Value - 1) * limit.Value; records = query.Skip(start).Take(limit.Value).ToList(); } else { records = query.ToList(); } return(this.Json(new { records, total }, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { return(null); } }
public ActionResult EncodeToAdaptiveBitrateMP4s(string assetId) { // Note: You need atleast 1 reserve streaming unit for dynamic packaging of encoded media. If you don't have that, you can't see video file playing. IAsset inputAsset = GetAssetById(assetId); string token = string.Empty; string uploadFileOriginalName = string.Empty; string fileName = string.Empty; ////// Without preset (say default preset), works very well //IJob job = context.Jobs.CreateWithSingleTask(MediaProcessorNames.AzureMediaEncoder, // MediaEncoderTaskPresetStrings.H264AdaptiveBitrateMP4Set720p, // inputAsset, // "UploadedVideo-" + Guid.NewGuid().ToString().ToLower() + "-Adaptive-Bitrate-MP4", // AssetCreationOptions.None); //job.Submit(); //IAsset encodedOutputAsset = job.OutputMediaAssets[0]; //// XML Preset IJob job = context.Jobs.Create(inputAsset.Name); if (inputAsset.AssetType.ToString() == "Video") { IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard"); string configuration = System.IO.File.ReadAllText(HttpContext.Server.MapPath("~/MediaServicesCustomPreset.xml")); ITask task = job.Tasks.AddNew(inputAsset.Name + "- encoding task", processor, configuration, TaskOptions.None); task.InputAssets.Add(inputAsset); task.OutputAssets.AddNew(inputAsset.Name + "-Adaptive-Bitrate-MP4", AssetCreationOptions.None); } else if (true) { IMediaProcessor processor = GetLatestMediaProcessorByName("Media Encoder Standard"); string configuration = System.IO.File.ReadAllText(HttpContext.Server.MapPath("~/MediaServicesCustomPreset.xml")); ITask task = job.Tasks.AddNew("Media Encoder Standard encoding task", processor, "Adaptive Streaming", TaskOptions.None); //ITask task = job.Tasks.AddNew("My encoding task", processor, configuration, TaskOptions.None); task.InputAssets.Add(inputAsset); task.OutputAssets.AddNew(inputAsset.Name + "-Adaptive-Bitrate-MP4", AssetCreationOptions.None); } job.Submit(); //Task progressJobTask = job.GetExecutionProgressTask(CancellationToken.None); //progressJobTask.Wait(); IAsset encodedAsset = job.OutputMediaAssets[0]; // process policy & encryption ProcessPolicyAndEncryption(encodedAsset); // Get file name string fileSession = "CurrentFile"; if (Session[fileSession] != null) { CloudFile model = (CloudFile)Session[fileSession]; uploadFileOriginalName = model.OriginalName; fileName = model.FileName; } // Generate Streaming URL string smoothStreamingUri = GetStreamingOriginLocator(encodedAsset, fileName); // add jobid and output asset id in database var video = new Video(); video.AssetId = assetId; video.EncodingJobId = job.Id; video.EncodedAssetId = encodedAsset.Id; video.LocatorUri = smoothStreamingUri; video.IsEncrypted = useAESRestriction; video.IndexedAssetId = ((IAsset)Session["indexingMediaAssets"]).Id; video.AssetFileName = uploadFileOriginalName; video.text = Session["textParsed"].ToString(); var videoformatlist = new List <string> { ".mp4", ".avi", ".mkv", ".flv", ".wmv" }; var audioformatlist = new List <string> { ".wav", ".mp3", ".aac" }; var format = uploadFileOriginalName.Substring(uploadFileOriginalName.Length - 4); if (videoformatlist.Contains(format)) { video.filetype = "video"; } else if (audioformatlist.Contains(format)) { video.filetype = "audio"; } else { video.filetype = "other"; } // Repository dal = new Repository(); //var result = dal.SaveVideo(video); SaveVideoListtoJson(video); if (useAESRestriction) { token = AzureMediaAsset.GetTestToken(encodedAsset.Id, encodedAsset); } // Remove session Session.Remove("CurrentFile"); Session.Clear(); // return success response return(Json(new { error = false, message = "Congratulations! Video is uploaded and pipelined for encoding, check console log for after encoding playback details.", assetId = assetId, jobId = job.Id, locator = smoothStreamingUri, encrypted = useAESRestriction, token = token })); }