public KalturaCaptionAsset Update(string id, KalturaCaptionAsset captionAsset) { KalturaParams kparams = new KalturaParams(); kparams.AddStringIfNotNull("id", id); if (captionAsset != null) { kparams.Add("captionAsset", captionAsset.ToParams()); } _Client.QueueServiceCall("caption_captionasset", "update", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaCaptionAsset)KalturaObjectFactory.Create(result)); }
// This will guide you through uploading a video, getting a specific transcoding flavor, replacing a flavor, and uploading a caption file. static void SampleReplaceVideoFlavorAndAddCaption() { // Upload a file Console.WriteLine("1. Upload a video file"); FileStream fileStream = new FileStream("DemoVideo.flv", FileMode.Open, FileAccess.Read); KalturaClient client = new KalturaClient(GetConfig()); string ks = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); client.KS = ks; KalturaUploadToken uploadToken = client.UploadTokenService.Add(); client.UploadTokenService.Upload(uploadToken.Id, fileStream); KalturaUploadedFileTokenResource mediaResource = new KalturaUploadedFileTokenResource(); mediaResource.Token = uploadToken.Id; KalturaMediaEntry mediaEntry = new KalturaMediaEntry(); mediaEntry.Name = "Media Entry Using C#.Net Client To Test Flavor Replace"; mediaEntry.MediaType = KalturaMediaType.VIDEO; mediaEntry = client.MediaService.Add(mediaEntry); mediaEntry = client.MediaService.AddContent(mediaEntry.Id, mediaResource); //verify that the account we're testing has the iPad flavor enabled int?flavorId = CheckIfFlavorExist("iPad"); if (flavorId == null) { Console.WriteLine("!! Default conversion profile does NOT include the new iPad flavor"); Console.WriteLine("!! Skipping the iPad flavor replace test, make sure account has newiPad flavor enabled."); } else { int iPadFlavorId = (int)flavorId; //C# failsafe from nullable int - we cast it to int Console.WriteLine("** Default conversion profile includes the new iPad flavor, id is: " + iPadFlavorId); //Detect the conversion readiness status of the iPad flavor and download the file when ready - Boolean statusB = false; KalturaFlavorAsset iPadFlavor = null; while (statusB == false) { Console.WriteLine("2. Waiting for the iPad flavor to be available..."); System.Threading.Thread.Sleep(5000); KalturaFlavorAssetFilter flavorAssetsFilter = new KalturaFlavorAssetFilter(); flavorAssetsFilter.EntryIdEqual = mediaEntry.Id; KalturaFlavorAssetListResponse flavorAssets = client.FlavorAssetService.List(flavorAssetsFilter); foreach (KalturaFlavorAsset flavor in flavorAssets.Objects) { if (flavor.FlavorParamsId == iPadFlavorId) { iPadFlavor = flavor; statusB = flavor.Status == KalturaFlavorAssetStatus.READY; if (flavor.Status == KalturaFlavorAssetStatus.NOT_APPLICABLE) { //in case the Kaltura Transcoding Decision Layer decided not to convert to this flavor, let's force it. client.FlavorAssetService.Convert(mediaEntry.Id, iPadFlavor.FlavorParamsId); } Console.WriteLine("3. iPad flavor (" + iPadFlavor.FlavorParamsId + "). It's " + (statusB ? "Ready to ROCK!" : "being converted. Waiting...")); } } } //this is the download URL for the actual Video file of the iPad flavor string iPadFlavorUrl = client.FlavorAssetService.GetDownloadUrl(iPadFlavor.Id); Console.WriteLine("4. iPad Flavor URL is: " + iPadFlavorUrl); //Alternatively, download URL for a given flavor id can also be retrived by creating the playManifest URL - string playManifestURL = "http://www.kaltura.com/p/{partnerId}/sp/0/playManifest/entryId/{entryId}/format/url/flavorParamId/{flavorParamId}/ks/{ks}/{fileName}.mp4"; playManifestURL = playManifestURL.Replace("{partnerId}", PARTNER_ID.ToString()); playManifestURL = playManifestURL.Replace("{entryId}", mediaEntry.Id); playManifestURL = playManifestURL.Replace("{flavorParamId}", iPadFlavor.FlavorParamsId.ToString()); playManifestURL = playManifestURL.Replace("{ks}", client.KS); playManifestURL = playManifestURL.Replace("{fileName}", mediaEntry.Name); Console.WriteLine("4. iPad Flavor playManifest URL is: " + playManifestURL); //now let's replace the flavor with our video file (e.g. after processing the file outside of Kaltura) FileStream fileStreamiPad = new FileStream("DemoVideoiPad.mp4", FileMode.Open, FileAccess.Read); uploadToken = client.UploadTokenService.Add(); client.UploadTokenService.Upload(uploadToken.Id, fileStreamiPad); mediaResource = new KalturaUploadedFileTokenResource(); mediaResource.Token = uploadToken.Id; KalturaFlavorAsset newiPadFlavor = client.FlavorAssetService.SetContent(iPadFlavor.Id, mediaResource); Console.WriteLine("5. iPad Flavor was replaced! id: " + newiPadFlavor.Id); } //now let's upload a new caption file to this entry FileStream fileStreamCaption = new FileStream("DemoCaptions.srt", FileMode.Open, FileAccess.Read); uploadToken = client.UploadTokenService.Add(); client.UploadTokenService.Upload(uploadToken.Id, fileStreamCaption); KalturaCaptionAsset captionAsset = new KalturaCaptionAsset(); captionAsset.Label = "Test C# Uploaded Caption"; captionAsset.Language = KalturaLanguage.EN; captionAsset.Format = KalturaCaptionType.SRT; captionAsset.FileExt = "srt"; captionAsset = client.CaptionAssetService.Add(mediaEntry.Id, captionAsset); Console.WriteLine("6. Added a new caption asset. Id: " + captionAsset.Id); KalturaUploadedFileTokenResource captionResource = new KalturaUploadedFileTokenResource(); captionResource.Token = uploadToken.Id; captionAsset = client.CaptionAssetService.SetContent(captionAsset.Id, captionResource); Console.WriteLine("7. Uploaded a new caption file and attached to caption asset id: " + captionAsset.Id); string captionUrl = client.CaptionAssetService.GetUrl(captionAsset.Id); Console.WriteLine("7. Newly created Caption Asset URL is: " + captionUrl); }