public FtpMediaStream(IngestMedia media, bool forWrite) { if (media?.Directory == null) { throw new ApplicationException(); } var uri = new Uri(media.FullPath); _client = new System.Net.FtpClient.FtpClient { Credentials = ((IngestDirectory)media.Directory).GetNetworkCredential(), Host = uri.Host }; try { _client.Connect(); _ftpStream = forWrite ? _client.OpenWrite(uri.LocalPath) : _client.OpenRead(uri.LocalPath); } catch { _client.Dispose(); throw; } }
public IngestMedia FindMedia(string clipName) { string clipNameLowered = clipName.ToLower(); IngestMedia result = (IngestMedia)FindMediaFirst(f => { var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(Path.GetFileName(f.FileName)); return(fileNameWithoutExtension != null && fileNameWithoutExtension.ToLower() == clipNameLowered); }); if (result == null & IsWAN) { string[] files = Directory.GetFiles(Folder, string.Format("{0}.*", clipName)); if (files.Length > 0) { string fileName = files[0]; result = (IngestMedia)CreateMedia(fileName); result.MediaName = Path.GetFileNameWithoutExtension(fileName); } } return(result); }
// parse files from BMD's MediaExpress private void _scanXML(string xmlFileName) { foreach (var fd in FindMediaList(f => f is IngestMedia && ((IngestMedia)f).BmdXmlFile == xmlFileName)) { ((IngestMedia)fd).BmdXmlFile = string.Empty; } try { XmlDocument doc = new XmlDocument(); doc.Load(xmlFileName); try { XmlNodeList clips = doc.SelectNodes(@"/xmeml/clip|/xmeml/bin/children/clip"); if (clips == null) { return; } foreach (XmlNode clip in clips) { string fileName = Path.GetFileName((new Uri(Uri.UnescapeDataString(clip.SelectSingleNode(@"file/pathurl").InnerText))).LocalPath); IngestMedia m = (IngestMedia)FindMediaFirst(f => f.FileName == fileName); if (m != null) { m.TcStart = clip.SelectSingleNode(@"file/timecode/string").InnerText.SMPTETimecodeToTimeSpan(new RationalNumber(int.Parse(clip.SelectSingleNode(@"rate/timebase").InnerText), 1)); m.TcPlay = m.TcStart; m.Duration = long.Parse(clip.SelectSingleNode(@"duration").InnerText).SMPTEFramesToTimeSpan(new RationalNumber(int.Parse(clip.SelectSingleNode(@"rate/timebase").InnerText), 1)); m.DurationPlay = m.Duration; m.BmdXmlFile = xmlFileName; } } } catch (NullReferenceException) { } catch (ArgumentNullException) { } } catch (Exception) { } }