static void SampleThreadedChunkUpload() { KalturaClient client = new KalturaClient(GetConfig()); client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); string fname = "DemoVideo.flv"; FileStream fileStream = new FileStream(fname, FileMode.Open, FileAccess.Read, FileShare.Read); KalturaUploadToken myToken = new KalturaUploadToken(); myToken.FileName = fname; FileInfo f = new FileInfo(fname); myToken.FileSize = f.Length; string mediaName = "C# Media Entry Uploaded in chunks using threads"; KalturaUploadToken uploadToken = client.UploadTokenService.Add(myToken); chunkThreaded(client.KS, fileStream, uploadToken.Id); KalturaUploadedFileTokenResource mediaResource = new KalturaUploadedFileTokenResource(); mediaResource.Token = uploadToken.Id; KalturaMediaEntry mediaEntry = new KalturaMediaEntry(); mediaEntry.Name = mediaName; mediaEntry.MediaType = KalturaMediaType.VIDEO; mediaEntry = client.MediaService.Add(mediaEntry); mediaEntry = client.MediaService.AddContent(mediaEntry.Id, mediaResource); }
static void SampleMetadataOperations() { // The Schema file for the field // Currently, you must build the xsd yourself. There is no utility provided. string xsdFile = "MetadataSchema.xsd"; StreamReader fileStream = File.OpenText(xsdFile); string xsd = fileStream.ReadToEnd(); string fieldValue = "VobSub"; string xmlData = "<metadata><SubtitleFormat>" + fieldValue + "</SubtitleFormat></metadata>"; KalturaClient client = new KalturaClient(GetConfig()); // start new session (client session is enough when we do operations in a users scope) client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.ADMIN, PARTNER_ID); // Setup a pager and search to use KalturaMediaEntryFilter mediaEntryFilter = new KalturaMediaEntryFilter(); mediaEntryFilter.OrderBy = KalturaMediaEntryOrderBy.CREATED_AT_ASC; mediaEntryFilter.MediaTypeEqual = KalturaMediaType.VIDEO; KalturaFilterPager pager = new KalturaFilterPager(); pager.PageSize = 1; pager.PageIndex = 1; KalturaMetadataProfile newMetadataProfile = new KalturaMetadataProfile(); newMetadataProfile.MetadataObjectType = KalturaMetadataObjectType.ENTRY; newMetadataProfile.Name = "Test"; Console.WriteLine("List videos, get the first one..."); IList <KalturaMediaEntry> entries = client.MediaService.List(mediaEntryFilter, pager).Objects; KalturaMediaEntry entry = entries[0]; KalturaMetadataProfile metadataProfile = client.MetadataProfileService.Add(newMetadataProfile, xsd); Console.WriteLine("1. Successfully created the custom metadata profile " + metadataProfile.Name + "."); KalturaMetadata metadata = client.MetadataService.Add(metadataProfile.Id, metadataProfile.MetadataObjectType, entry.Id, xmlData); Console.WriteLine("2. Successfully added the custom data field for entryid: " + entry.Id); KalturaMetadataFilter metadataFilter = new KalturaMetadataFilter(); metadataFilter.ObjectIdEqual = entry.Id; metadataFilter.MetadataProfileIdEqual = metadataProfile.Id; IList <KalturaMetadata> metadataList = client.MetadataService.List(metadataFilter).Objects; if (metadataList.Count == 0) { throw new Exception("Failed to find metadata for entryid: " + entry.Id); } }
/// <summary> /// Shows how to start session, create a mix, add media, and append it to a mix timeline using multi request /// </summary> private static void AdvancedMultiRequestExample() { KalturaClient client = new KalturaClient(GetConfig()); client.StartMultiRequest(); // Request 1 client.SessionService.Start(ADMIN_SECRET, "", KalturaSessionType.ADMIN, PARTNER_ID, 86400, ""); client.KS = "{1:result}"; // for the current multi request, the result of the first call will be used as the ks for next calls FileStream fileStream = new FileStream("DemoVideo.flv", FileMode.Open, FileAccess.Read); // Request 2 KalturaUploadToken uploadToken = client.UploadTokenService.Add(); // Request 3 uploadToken = client.UploadTokenService.Upload("{2:result}", fileStream); // Request 4 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); // Request 5 KalturaUploadedFileTokenResource mediaResource = new KalturaUploadedFileTokenResource(); mediaResource.Token = "{2:result:id}"; mediaEntry = client.MediaService.AddContent("{4:result}", mediaResource); // map paramters from responses to requests according to response calling order and names to request calling order and C# method parameter name client.MapMultiRequestParam(2, ":id", 3, "uploadTokenId"); client.MapMultiRequestParam(4, ":id", 5, "entryId"); KalturaMultiResponse response = client.DoMultiRequest(); foreach (object obj in response) { if (obj.GetType() == typeof(KalturaAPIException)) { Console.WriteLine("Error occurred: " + ((KalturaAPIException)obj).Message); } } // when accessing the response object we will use an index and not the response number (response number - 1) if (response[4].GetType() == typeof(KalturaMediaEntry)) { KalturaMediaEntry newMediaEntry = (KalturaMediaEntry)response[4]; Console.WriteLine("Multirequest newly added entry id: " + newMediaEntry.Id); } }
private static KalturaMediaEntry createEntry() { KalturaClient client = new KalturaClient(GetConfig()); client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.USER, PARTNER_ID, 86400, ""); KalturaMediaEntry entry = new KalturaMediaEntry(); entry.MediaType = KalturaMediaType.VIDEO; entry.Name = "test_" + Guid.NewGuid().ToString(); entry.Tags = uniqueTag; return(client.MediaService.Add(entry)); }
public KalturaMediaEntry Add(KalturaMediaEntry entry) { KalturaParams kparams = new KalturaParams(); if (entry != null) { kparams.Add("entry", entry.ToParams()); } _Client.QueueServiceCall("media", "add", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
// this method is deprecated and should be avoided. // see above SampleReplaceVideoFlavorAndAddCaption for the current method of uploading media. // new method should use the Add method along with specific appropriate Resource object. static void StartSessionAndUploadMedia(Uri url) { KalturaClient client = new KalturaClient(GetConfig()); // start new session (client session is enough when we do operations in a users scope) client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.USER, PARTNER_ID, 86400, ""); KalturaMediaEntry mediaEntry = new KalturaMediaEntry(); mediaEntry.Name = "Media Entry Using .Net Client"; mediaEntry.MediaType = KalturaMediaType.VIDEO; // add the media using the upload token mediaEntry = client.MediaService.AddFromUrl(mediaEntry, url.ToString()); Console.WriteLine("New media was created with the following id: " + mediaEntry.Id); }
public KalturaMediaEntry Update(string entryId, KalturaMediaEntry mediaEntry) { KalturaParams kparams = new KalturaParams(); kparams.AddStringIfNotNull("entryId", entryId); if (mediaEntry != null) { kparams.Add("mediaEntry", mediaEntry.ToParams()); } _Client.QueueServiceCall("media", "update", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
public KalturaMediaEntry AddFromUrl(KalturaMediaEntry mediaEntry, string url) { KalturaParams kparams = new KalturaParams(); if (mediaEntry != null) { kparams.Add("mediaEntry", mediaEntry.ToParams()); } kparams.AddStringIfNotNull("url", url); _Client.QueueServiceCall("media", "addFromUrl", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
public KalturaMediaEntry AddFromFlavorAsset(string sourceFlavorAssetId, KalturaMediaEntry mediaEntry) { KalturaParams kparams = new KalturaParams(); kparams.AddStringIfNotNull("sourceFlavorAssetId", sourceFlavorAssetId); if (mediaEntry != null) { kparams.Add("mediaEntry", mediaEntry.ToParams()); } _Client.QueueServiceCall("media", "addFromFlavorAsset", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
// this method is deprecated and should be avoided. // see above SampleReplaceVideoFlavorAndAddCaption for the current method of uploading media. // new method should use the Add method along with specific appropriate Resource object and Upload Token. static KalturaMediaEntry StartSessionAndUploadMedia(FileStream fileStream) { KalturaClient client = new KalturaClient(GetConfig()); // start new session (client session is enough when we do operations in a users scope) client.KS = client.GenerateSession(ADMIN_SECRET, USER_ID, KalturaSessionType.USER, PARTNER_ID, 86400, ""); // upload the media string uploadTokenId = client.MediaService.Upload(fileStream); // synchronous proccess KalturaMediaEntry mediaEntry = new KalturaMediaEntry(); mediaEntry.Name = "Media Entry Using .Net Client"; mediaEntry.MediaType = KalturaMediaType.VIDEO; // add the media using the upload token mediaEntry = client.MediaService.AddFromUploadedFile(mediaEntry, uploadTokenId); Console.WriteLine("New media was created with the following id: " + mediaEntry.Id); return(mediaEntry); }
public KalturaMediaEntry AddFromSearchResult(KalturaMediaEntry mediaEntry, KalturaSearchResult searchResult) { KalturaParams kparams = new KalturaParams(); if (mediaEntry != null) { kparams.Add("mediaEntry", mediaEntry.ToParams()); } if (searchResult != null) { kparams.Add("searchResult", searchResult.ToParams()); } _Client.QueueServiceCall("media", "addFromSearchResult", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
public KalturaMediaEntry AddMediaEntry(KalturaMediaEntry mediaEntry, string uploadTokenId, int emailProfId, string fromAddress, string emailMsgId) { KalturaParams kparams = new KalturaParams(); if (mediaEntry != null) { kparams.Add("mediaEntry", mediaEntry.ToParams()); } kparams.AddStringIfNotNull("uploadTokenId", uploadTokenId); kparams.AddIntIfNotNull("emailProfId", emailProfId); kparams.AddStringIfNotNull("fromAddress", fromAddress); kparams.AddStringIfNotNull("emailMsgId", emailMsgId); _Client.QueueServiceCall("emailingestionprofile", "addMediaEntry", kparams); if (this._Client.IsMultiRequest) { return(null); } XmlElement result = _Client.DoQueue(); return((KalturaMediaEntry)KalturaObjectFactory.Create(result)); }
/// <summary> /// Shows how to start session, create a mix, add media, and append it to a mix timeline using multi request /// </summary> private static void AdvancedMultiRequestExample() { FileStream fileStream = new FileStream("DemoVideo.flv", FileMode.Open, FileAccess.Read); KalturaMediaEntry mediaEntry = new KalturaMediaEntry(); mediaEntry.Name = "Media Entry Using C#.Net Client To Test Flavor Replace"; mediaEntry.MediaType = KalturaMediaType.VIDEO; KalturaUploadedFileTokenResource mediaResource = new KalturaUploadedFileTokenResource(); mediaResource.Token = "{1:result:id}"; KalturaClient client = new KalturaClient(GetConfig()); client.KS = client.GenerateSession(ADMIN_SECRET, "", KalturaSessionType.ADMIN, PARTNER_ID); client.StartMultiRequest(); client.UploadTokenService.Add(); client.MediaService.Add(mediaEntry); client.UploadTokenService.Upload("{1:result:id}", fileStream); client.MediaService.AddContent("{2:result:id}", mediaResource); KalturaMultiResponse response = client.DoMultiRequest(); foreach (object obj in response) { if (obj is KalturaAPIException) { Console.WriteLine("Error occurred: " + ((KalturaAPIException)obj).Message); } } // when accessing the response object we will use an index and not the response number (response number - 1) if (response[3] is KalturaMediaEntry) { KalturaMediaEntry newMediaEntry = (KalturaMediaEntry)response[3]; Console.WriteLine("Multirequest newly added entry id: " + newMediaEntry.Id + ", status: " + newMediaEntry.Status); } }
// 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); }
public KalturaMediaEntry AddFromSearchResult(KalturaMediaEntry mediaEntry) { return(this.AddFromSearchResult(mediaEntry, null)); }
private static IList <KalturaMediaEntry> createEntriesWithMetadataObjects(int entriesCount, int metadataProfileCount) { IList <KalturaMediaEntry> entries = new List <KalturaMediaEntry>(2); IDictionary <string, KalturaMetadataProfile> metadataProfiles = new Dictionary <string, KalturaMetadataProfile>(3); string xsd; for (int i = 1; i <= metadataProfileCount; i++) { xsd = @"<xsd:schema xmlns:xsd=""http://www.w3.org/2001/XMLSchema""> <xsd:element name=""metadata""> <xsd:complexType> <xsd:sequence> <xsd:element name=""Choice" + i + @""" minOccurs=""0"" maxOccurs=""1""> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>Example choice " + i + @"</label> <key>choice" + i + @"</key> <searchable>true</searchable> <description>Example choice " + i + @"</description> </xsd:appinfo> </xsd:annotation> <xsd:simpleType> <xsd:restriction base=""listType""> <xsd:enumeration value=""on"" /> <xsd:enumeration value=""off"" /> </xsd:restriction> </xsd:simpleType> </xsd:element> <xsd:element name=""FreeText" + i + @""" minOccurs=""0"" maxOccurs=""1"" type=""textType""> <xsd:annotation> <xsd:documentation></xsd:documentation> <xsd:appinfo> <label>Free text " + i + @"</label> <key>freeText" + i + @"</key> <searchable>true</searchable> <description>Free text " + i + @"</description> </xsd:appinfo> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name=""textType""> <xsd:simpleContent> <xsd:extension base=""xsd:string"" /> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name=""objectType""> <xsd:simpleContent> <xsd:extension base=""xsd:string"" /> </xsd:simpleContent> </xsd:complexType> <xsd:simpleType name=""listType""> <xsd:restriction base=""xsd:string"" /> </xsd:simpleType> </xsd:schema>"; metadataProfiles.Add(i.ToString(), createMetadataProfile(KalturaMetadataObjectType.ENTRY, xsd)); } string xml; for (int i = 0; i < entriesCount; i++) { KalturaMediaEntry entry = createEntry(); entries.Add(entry); foreach (string index in metadataProfiles.Keys) { xml = @"<metadata> <Choice" + index + ">on</Choice" + index + @"> <FreeText" + index + ">example text " + index + "</FreeText" + index + @"> </metadata>"; createMetadata(metadataProfiles[index].Id, KalturaMetadataObjectType.ENTRY, entry.Id, xml); } } return(entries); }
public KalturaMediaEntry AddFromEntry(string sourceEntryId, KalturaMediaEntry mediaEntry) { return(this.AddFromEntry(sourceEntryId, mediaEntry, Int32.MinValue)); }