Home > APIs > AppServer API > Examples > Asset Management > Track Labels
Track Labels
The sample code below shows how to set and get a clip's track labels.
[C#] // clip to edit string clipname = "V:/default/Clip"; string fullclipname = "edl/cmf//local/" + clipname; // create an AppServer bool newConnection = false; IAppServer iappServer = appServerMgrProxy.CreateAppServer(suiteName, appName, out newConnection); // get a track editor for clip IMediaMgr mediaMgr = iappServer.CreateMediaMgr(appName); ITrackEditor trackEditor = (ITrackEditor) mediaMgr.CreateEditor(fullclipname); // get the clip's XML representation string xml; trackEditor.GetXml("", out xml); // load the xml string into a native XmlDocument XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xml); // setup a namespace manager to parse the xml doc XmlNamespaceManager namespaceManager = new XmlNamespaceManager(xmlDoc.NameTable); namespaceManager.AddNamespace("ns", "PdrDB__1.0"); //////////////////////////////////////// // set track labels //////////////////////////////////////// // get all audio track nodes XmlNodeList trackList = xmlDoc.SelectNodes(("//ns:XML/ns:Data/ns:Movie/ns:Track[@TrackType='PdrAudioTrack']"), namespaceManager); // and set their track labels foreach (XmlNode track in trackList) { // get track number, ID, and label int trackNumber = Int32.Parse(track.Attributes.GetNamedItem("TrackNumber").Value); // track position like 1, 2, 3, 4 string trackId = track.Attributes.GetNamedItem("TrackId").Value; // GUID id like b7d4e12e8350425bbaa4eb16236fb0e0 // if first or second tracks, set label to English if (trackNumber == 1 || trackNumber == 2) trackEditor.SetTrackLabel(trackId, "ENG"); // if third or fourth tracks, set label to something else else if (trackNumber == 3 || trackNumber == 4) trackEditor.SetTrackLabel(trackId, "something else"); } //////////////////////////////////////// // get track labels //////////////////////////////////////// // Make sure you call GetXml again to get the *updated* XML. Load the XML document again. trackEditor.GetXml("", out xml); xmlDoc.LoadXml(xml); // get all audio track nodes trackList = xmlDoc.SelectNodes(("//ns:XML/ns:Data/ns:Movie/ns:Track[@TrackType='PdrAudioTrack']"), namespaceManager); // and print them foreach (XmlNode track in trackList) { // get track number, ID, and label int trackNumber = Int32.Parse(track.Attributes.GetNamedItem("TrackNumber").Value); // track position like 1, 2, 3, 4 string trackLabel = track.Attributes.GetNamedItem("TrackLabel").Value; // label like "ENG", "FRE", or anything you assign Console.WriteLine("track number: {0}, track label: {1}", trackNumber, trackLabel ); } // be sure to cleanup or you will leak these objects! trackEditor.Detach(); trackEditor.Dispose(); mediaMgr.Dispose(); iappServer.CloseConnection();