private void OnMediaServerRemoved(MediaServer aMediaServer) { if (MediaServerRemoved != null) { MediaServerRemoved(this, new EventArgsMediaServer(aMediaServer)); } }
public static void Main() { MusicServer ms = new WinAmpServer(); CallPlay(ms); ms = new MediaServer(); CallPlay(ms); }
internal void AddMediaServer(MediaServer aMediaServer) { lock (iMediaServers) { iMediaServers.Add(aMediaServer); } OnMediaServerAdded(aMediaServer); }
internal void RemoveMediaServer(MediaServer aMediaServer) { lock (iMediaServers) { iMediaServers.Remove(aMediaServer); } OnMediaServerRemoved(aMediaServer); }
static async Task Main(string[] args) { CrossMediaManager.Current.Init(); MediaServer mediaServer = new MediaServer(); mediaServer.PlayFile(); JukeboxServer server = new JukeboxServer(); await server.Start(); Console.WriteLine("Done."); }
private int server_ProcessFileRequest(HttpRequestContext context, HttpResponse response) { Uri uri = context.Request.URI; if (uri.AbsolutePath == "/test/test.mp3") { MediaServer.SetResponseFilePath(context, response, "C:\\Test.mp3"); return(0); } return(-1); }
private void CreateMediaServer() { try { mMediaServer = new MediaServer(); mMediaServer.Debug += MediaServer_Debug; mMediaServer.Start(); } catch (Exception ex) { WriteLog(LogMode.Error, string.Format("CreateMediaServer fail.\t{0}", ex.Message)); } }
public bool Start() { if (!GConfHelper.ShareLibrary) { return(false); } var udn = "uuid:" + ServiceGuid.ToString(); var friendly_name = GConfHelper.LibraryName; var manufacturer = "Mono Project"; var model_name = "Mono.Upnp.Dcp.MediaServer1.FSpot"; var manufacturer_url = new Uri("http://www.mono-project.org/"); var model_description = "A F-Spot add-in for sharing photos over the MediaServer1 spec."; var model_number = "1"; var model_url = new Uri("http://www.mono-project.org/Mono.Upnp"); var serial_number = "MONO-UPNP-MEDIA-SERVER-1"; string upc = null; try { var ms_media_receiver_registrar = new Service <MSMediaReceiverRegistrar> ( MSMediaReceiverRegistrar.ServiceType, "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar", new DummyMSMediaReceiverRegistrar()); media_server = new MediaServer( udn, friendly_name, manufacturer, model_name, new RootDeviceOptions { Services = new[] { ms_media_receiver_registrar }, ManufacturerUrl = manufacturer_url, ModelDescription = model_description, ModelNumber = model_number, ModelUrl = model_url, SerialNumber = serial_number, Upc = upc }, new DummyConnectionManager(), new FSpotContentDirectory() ); media_server.Start(); IsRunning = true; return(true); } catch (Exception ex) { Console.WriteLine("Error starting Mono.Upnp server: {0}", ex.Message); return(false); } }
private async Task AddMediaServerAsync(DeviceDescription deviceDescription, Uri aliasUrl, Uri deviceDescriptionUrl, bool is_online_media_server) { if (_mediaServers.ContainsKey(deviceDescriptionUrl.AbsoluteUri)) { return; } _mediaServers.Add(deviceDescriptionUrl.AbsoluteUri, null); MediaServer mediaServer = new MediaServer(deviceDescription, aliasUrl, deviceDescriptionUrl, is_online_media_server); await mediaServer.InitAsync(); _mediaServers[deviceDescriptionUrl.AbsoluteUri] = mediaServer; if (OnMediaServerFound != null) { OnMediaServerFound(this, new MediaServerFoundEventArgs(mediaServer)); } }
private void Run() { log4net.Config.BasicConfigurator.Configure(); Console.Title = "Press 'q' to quit"; Console.WriteLine("Starting..."); using (var upnp = new UPnP()) { var server = new MediaServer("TestManaged"); server.BrowseMetadata += new MediaServer.BrowseMetadataDelegate(server_BrowseMetadata); server.BrowseDirectChildren += new MediaServer.BrowseDirectChildrenDelegate(server_BrowseDirectChildren); server.ProcessFileRequest += new MediaServer.ProcessFileRequestDelegate(server_ProcessFileRequest); upnp.AddDeviceHost(server); upnp.Start(); #region handle keyboard for (bool quit = false; !quit;) { switch (Console.ReadKey(true).KeyChar) { case 'q': quit = true; break; } } #endregion server.BrowseMetadata -= new MediaServer.BrowseMetadataDelegate(server_BrowseMetadata); server.BrowseDirectChildren -= new MediaServer.BrowseDirectChildrenDelegate(server_BrowseDirectChildren); server.ProcessFileRequest -= new MediaServer.ProcessFileRequestDelegate(server_ProcessFileRequest); upnp.Stop(); } Console.WriteLine("Stopped."); }
/// <summary> /// Gets the JSON string value for the latest versions of Plex from /// the Plex download site. /// </summary> /// <returns> /// The JSON string value if the request was successful, or null if /// the request was not successful. /// </returns> private string GetPlexPackageJson() { string content; // Get the Plex token for the Plex user string token = MediaServer.GetToken(_plexUserRegistryKey); if (token != null) { _client.DefaultRequestHeaders.Add("X-Plex-Token", token); } try { // Get the URL for the package specified by the update channel // set in the Plex server string url = GetPackageUrl(); if (url == null) { return(null); } using (HttpResponseMessage response = _client.GetAsync(url).Result) { content = response.Content.ReadAsStringAsync().Result; } return(content); } catch (HttpRequestException ex) { OnMessageChanged($"Could not get Plex package information. Message: {ex.Message}."); return(null); } catch (AggregateException ae) { foreach (var e in ae.Flatten().InnerExceptions) { OnMessageChanged($"Could not get Plex package information. Message: {e.Message}."); } return(null); } }
private void Run() { log4net.Config.BasicConfigurator.Configure(); Console.Title = "Press 'q' to quit"; Console.WriteLine("Starting..."); using (var upnp = new UPnP()) { var server = new MediaServer("TestManaged"); server.BrowseMetadata += new MediaServer.BrowseMetadataDelegate(server_BrowseMetadata); server.BrowseDirectChildren += new MediaServer.BrowseDirectChildrenDelegate(server_BrowseDirectChildren); server.ProcessFileRequest += new MediaServer.ProcessFileRequestDelegate(server_ProcessFileRequest); upnp.AddDeviceHost(server); upnp.Start(); #region handle keyboard for (bool quit = false; !quit; ) { switch (Console.ReadKey(true).KeyChar) { case 'q': quit = true; break; } } #endregion server.BrowseMetadata -= new MediaServer.BrowseMetadataDelegate(server_BrowseMetadata); server.BrowseDirectChildren -= new MediaServer.BrowseDirectChildrenDelegate(server_BrowseDirectChildren); server.ProcessFileRequest -= new MediaServer.ProcessFileRequestDelegate(server_ProcessFileRequest); upnp.Stop(); } Console.WriteLine("Stopped."); }
public async Task <IEnumerable <TMedia> > GetMediasAsync <TMedia>(MediaServer mediaServer, bool cacheFirst = true) where TMedia : MediaItem { var key = AppConstants.GetMediasCacheKey(typeof(TMedia).Name, mediaServer.UDN); if (!cacheFirst || !_cache.TryGetValue <IEnumerable <TMedia> >(key, out var results)) { results = await mediaServer.SearchAsync <TMedia>(); foreach (var item in results) { foreach (var r in item.Resources) { r.Uri = r.Uri.Replace("127.0.0.1", _localIp); } } _cache.Set(key, results); } return(results); }
/// <summary> /// Increments the fault count for the specified ServiceHost. If the new count /// is greater or equal to the _maxFaultsPerService, then the MediaServer Process is terminated. /// </summary> /// <param name="serviceHostName">service host configuration name</param> private static void RecordFault(string serviceHostName) { if (_maxFaultsPerService < 1) { return; } if (!_faultRecord.ContainsKey(serviceHostName)) { _faultRecord.Add(serviceHostName, 1); } else { _faultRecord[serviceHostName]++; if (_faultRecord[serviceHostName] >= _maxFaultsPerService) { ErrorLogger.WriteToEventLog("The ServiceHost " + serviceHostName + " reached the max consecutive fault limit (" + _maxFaultsPerService + ")", EventLogEntryType.Error); MediaServer.CommitSuicide(); } } }
public static async Task <MediaServer> TestSupportedOnlineDeviceAsync(Uri url) { try { Uri deviceDescriptionUrl = await DetectDeviceDescriptionUrlAsync(url); if (deviceDescriptionUrl == null) { return(null); } DeviceDescription deviceDescription = await Deserializer.DeserializeXmlAsync <DeviceDescription>(deviceDescriptionUrl); MediaServer mediaServer = new MediaServer(deviceDescription, url, deviceDescriptionUrl, true); return(mediaServer); } catch { return(null); } }
public void RemoveListViewLibraries(MediaServer aServer) { if (iForm.InvokeRequired) { iForm.BeginInvoke(new RemoveListViewLibrariesDelegate(RemoveListViewLibraries), new object[] { aServer }); } else { //iForm.ListViewLibrary.BeginUpdate(); foreach (ListViewItem item in iForm.ListViewLibrary.Items) { if (item.Text == aServer.Name) { iForm.ListViewLibrary.Items.Remove(item); break; } } //iForm.ListViewLibrary.EndUpdate(); } }
static void Main(string[] args) { if (args != null && args.Length > 0) { if (args[0].ToUpper() == "C") { //以控制台运行 try { IsConsole = true; MediaServer mediaServer = new MediaServer(); mediaServer.Debug += MediaServer_Debug; //调试模式 if (args.Length > 1 && args[1].ToUpper() == "D") { IsDebug = true; } mediaServer.Start(); Console.ReadLine(); mediaServer.Stop(); } catch (Exception ex) { Console.WriteLine(ex.Message); } return; } } //以Windows服务器运行 MediaService mediaService = new MediaService(); ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { mediaService }; ServiceBase.Run(ServicesToRun); }
public void AddListViewLibraries(MediaServer aServer) { if (iForm.InvokeRequired) { iForm.BeginInvoke(new AddListViewLibrariesDelegate(AddListViewLibraries), new object[] { aServer }); } else { //iForm.ListViewLibrary.BeginUpdate(); bool added = false; string name = aServer.Name; if (name != null) { ListViewItem item = new ListViewItem(name); for (int i = 0; i < iForm.ListViewLibrary.Items.Count; ++i) { if (item.Text.CompareTo(iForm.ListViewLibrary.Items[i].Text) < 0) { iForm.ListViewLibrary.Items.Insert(i, item); added = true; break; } } if (!added) { iForm.ListViewLibrary.Items.Add(item); } } else { Console.WriteLine("No name for server " + aServer); } //iForm.ListViewLibrary.EndUpdate(); } }
public override async void OnNavigatedTo(NavigatedToEventArgs e, Dictionary <string, object> viewModelState) { base.OnNavigatedTo(e, viewModelState); var parameters = NavigationParameters.CreateFromString((string)e.Parameter); string mediaServerId = parameters.MediaServerId; mediaServer = await mediaServerRepository.FindAsync(mediaServerId); if (mediaServer == null) { return; } if (parameters.HasParentDirectoryId) { contentDirectory = mediaServer.GetContentDirectory(parameters.ParentDirectoryId); } else { contentDirectory = mediaServer; } if (contentDirectory == null) { return; } DirectoryItems = contentDirectory.DirectoryItems .ToReadOnlyReactiveCollection() .AddTo(Disposable); if (e.NavigationMode == NavigationMode.New) { await contentDirectory.LoadDirectoryItemsAsync(); } }
private void AbortTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { _abortTimer.Enabled = false; string hangMessage = String.Format("Graph {0} is hung trying to enter {1} state", SourceConfig.SourceName, _abortState); AppLogger.Message(hangMessage); ErrorLogger.WriteToEventLog(hangMessage, EventLogEntryType.Error); #if SUICIDE_ON_DSHANG MediaServer.CommitSuicide(); #endif //Calling Abort on the DS graph seems to also hang... so this is commented out //AppLogger.Message(String.Format("trying to abort {0}", SourceConfig.SourceName)); //int hr = _graphBuilder.Abort(); //DsError.ThrowExceptionForHR(hr); //State = ServerGraphState.Aborted; //GraphManager.RemoveGraph(SourceConfig.SourceName); //_abortThread.Abort(); //Dispose(true); }
private void MediaServerAdded(object sender, Library.EventArgsMediaServer e) { try { ModelMediaServer mediaServer = new ModelMediaServer(e.MediaServer, iSupport.EventUpnpProvider); iMutex.WaitOne(); if (iSortedMediaServers.ContainsKey(e.MediaServer.Name)) { MediaServer matched = null; foreach (MediaServer m in iMediaServers.Keys) { if (m.Name.Equals(e.MediaServer.Name)) { matched = m; break; } } if (matched != null) { iMediaServers.Remove(matched); } iSortedMediaServers.Remove(e.MediaServer.Name); } iMediaServers.Add(e.MediaServer, mediaServer); iSortedMediaServers.Add(e.MediaServer.Name, mediaServer); Assert.Check(iMediaServers.Keys.Count == iSortedMediaServers.Count); iMutex.ReleaseMutex(); if (EventContentAdded != null) { EventContentAdded(this, EventArgs.Empty); } } catch (ServiceException) { } }
private void MoveToContentDirectoryPage(MediaServer selectedMediaServer) { var parameters = new NavigationParameters(selectedMediaServer.Id); navigationService.Navigate(PageTokens.Directory.ToString(), parameters.ToString()); }
public static void Main(string[] args) { string path = null; var udn = "uuid:" + Guid.NewGuid().ToString(); var friendly_name = "Mono.Upnp File System MediaServer"; var manufacturer = "Mono Project"; var model_name = "Mono.Upnp.Dcp.MediaServer1.FileSystem.ConsoleClient"; var manufacturer_url = new Uri("http://www.mono-project.org/"); var model_description = "A console client for sharing file system folders over the MediaServer1 spec."; var model_number = "1"; var model_url = new Uri("http://www.mono-project.org/Mono.Upnp"); var serial_number = "MONO-UPNP-MEDIA-SERVER-1"; string upc = null; var help = false; var options = new OptionSet { { "p|path=", "the path of the directory to share.", v => path = v }, { "u|udn=", "the Unique Device Name of the MediaServer device.", v => udn = v }, { "f|friendly-name=", "the friendly name of the MediaServer device.", v => friendly_name = v }, { "m|manufacturer=", "The name of the MediaServer device manufacturer.", v => manufacturer = v }, { "n|name=", "the name of the MediaServer device model.", v => model_name = v }, { "manufacturer-url=", "the URL for the MediaServer device manufacturer.", v => manufacturer_url = new Uri(v) }, { "d|description=", "a description of the MediaServer device.", v => model_description = v }, { "model-number=", "the model number of the MediaServer device.", v => model_number = v }, { "model_url=", "the URL for the MediaServer device.", v => model_url = new Uri(v) }, { "serial-number=", "the serial number for the MediaServer device.", v => serial_number = v }, { "upc=", "the Universal Product Code for the MediaServer device.", v => upc = v }, { "h|?|help", "show this help message and exit.", v => help = v != null } }; List <string> extras; try { extras = options.Parse(args); } catch (Exception e) { Console.WriteLine("mono-upnp-simple-media-server:"); Console.WriteLine(e.Message); Console.WriteLine("Try mono-upnp-simple-media-server --help for more info."); return; } if (extras.Count == 0) { if (path == null) { path = Directory.GetCurrentDirectory(); } } else if (extras.Count == 1) { if (path != null) { Console.WriteLine("mono-upnp-simple-media-server:"); Console.WriteLine("You can only specify one path. You specified 2:"); Console.WriteLine("\t" + path); Console.WriteLine("\t" + extras[0]); Console.WriteLine("Try mono-upnp-simple-media-server --help for more info."); return; } else { path = extras[0]; } } else { Console.WriteLine("mono-upnp-simple-media-server:"); Console.WriteLine(string.Format("You can only specify one path. You specified {0}:", extras.Count)); foreach (var extra in extras) { Console.WriteLine("\t" + extra); } Console.WriteLine("Try mono-upnp-simple-media-server --help for more info."); return; } if (help) { ShowHelp(options); return; } Console.WriteLine("Serving " + path); var connection_manager = new DummyConnectionManager(); var content_directory = BuildContentDirectory(path); var ms_media_server_registrar = new Service <MSMediaReceiverRegistrar>( MSMediaReceiverRegistrar.ServiceType, "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar", new DummyMSMediaReceiverRegistrar()); var media_server = new MediaServer( udn, friendly_name, manufacturer, model_name, new DeviceOptions { Services = new[] { ms_media_server_registrar }, ManufacturerUrl = manufacturer_url, ModelDescription = model_description, ModelNumber = model_number, ModelUrl = model_url, SerialNumber = serial_number, Upc = upc }, connection_manager, content_directory ); using (media_server) { media_server.Start(); Console.WriteLine("Press ENTER to exit."); Console.ReadLine(); } }
/// <summary> /// Get Raumfeld DeviceDescription and create new MediaServer /// </summary> /// <returns></returns> //private async Task<MediaServer> loadMediaServerAsync() //{ // //if ((raumfeldDevices?.Devices?.Count() ?? 0) == 0 || server == null) { return null; } // string uuid = ((Guid)server.Properties["System.Devices.ContainerId"]).ToString().ToLower(); // try // { // string serverDescription = raumfeldDevices.Devices.Where(server => server.Udn.Replace("uuid:", "").ToLower() == uuid).Select(server => server.Location).FirstOrDefault(); // if (!string.IsNullOrEmpty(serverDescription)) // { // Uri serverUri = new Uri(serverDescription); // var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); // httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; // using (HttpClient client = new HttpClient()) // { // using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) // { // request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ // request.Headers.Add("Accept-Language", "en"); // request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); // using (HttpResponseMessage response = await client.SendRequestAsync(request)) // { // if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) // { // string xmlString = await response.Content.ReadAsStringAsync(); // XmlDocument xmlDocument = new XmlDocument(); // xmlDocument.LoadXml(xmlString); // if (xmlDocument != null) // { // DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize<DeviceDescription>(); // MediaServer mediaServer = new MediaServer(deviceDescription, serverUri.Host, serverUri.Port) // { // DeviceType = MediaDeviceType.MediaServer // }; // await mediaServer.LoadServicesAsync(); // return mediaServer; // } // } // } // } // } // } // } // catch (Exception exception) // { // await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "LoadMediaServer"); // Logger.GetLogger().SaveMessage(exception, "LoadMediaServerAsync"); // } // return null; //} /// <summary> /// Get Raumfeld DeviceDescription and create new MediaRenderer /// </summary> /// <returns></returns> //private async Task<MediaRenderer> loadMediaRendererAsync(string rendererDescription, MediaDeviceType mediaDeviceType) //{ // //if ((raumfeldDevices?.Devices?.Count() ?? 0) == 0 || server == null) { return null; } // try // { // if (!string.IsNullOrEmpty(rendererDescription)) // { // Uri serverUri = new Uri(rendererDescription); // var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); // httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; // using (HttpClient client = new HttpClient(httpFilter)) // { // using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) // { // request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ // request.Headers.Add("Accept-Language", "en"); // request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); // using (HttpResponseMessage response = await client.SendRequestAsync(request)) // { // if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) // { // string xmlString = await response.Content.ReadAsStringAsync(); // XmlDocument xmlDocument = new XmlDocument(); // xmlDocument.LoadXml(xmlString); // if (xmlDocument != null) // { // DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize<DeviceDescription>(); // MediaRenderer mediaRenderer = new MediaRenderer(deviceDescription, serverUri.Host, serverUri.Port); // await mediaRenderer.LoadServicesAsync(); // mediaRenderer.DeviceType = mediaDeviceType; // return mediaRenderer; // } // } // } // } // } // } // } // catch (Exception exception) // { // await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "LoadMediaRenderer"); // Logger.GetLogger().SaveMessage(exception, "LoadMediaRendererAsync"); // } // return null; //} /// <summary> /// Get Raumfeld DeviceDescription and create new MediaRenderer /// </summary> /// <returns></returns> private async Task <MediaDevice> loadMediaDeviceAsync(string rendererDescription, MediaDeviceType mediaDeviceType) { try { if (!string.IsNullOrEmpty(rendererDescription)) { Uri serverUri = new Uri(rendererDescription); var httpFilter = new Windows.Web.Http.Filters.HttpBaseProtocolFilter(); httpFilter.CacheControl.ReadBehavior = Windows.Web.Http.Filters.HttpCacheReadBehavior.NoCache; using (HttpClient client = new HttpClient(httpFilter)) { using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, serverUri)) { request.Headers.Add("User-Agent", "RaumfeldControl/0.0 RaumfeldProtocol/1"); /* RaumfeldControl/3.6 RaumfeldProtocol/399 Build => https://github.com/masmu/pulseaudio-dlna/issues/227 */ request.Headers.Add("Accept-Language", "en"); request.Headers.Add("ContentType", "text/xml; charset=\"utf - 8\""); using (HttpResponseMessage response = await client.SendRequestAsync(request)) { if (response.StatusCode == Windows.Web.Http.HttpStatusCode.Ok) { string xmlString = await response.Content.ReadAsStringAsync(); XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); if (xmlDocument != null) { DeviceDescription deviceDescription = xmlDocument.GetXml().Deserialize <DeviceDescription>(); if (mediaDeviceType == MediaDeviceType.MediaServer) { MediaServer mediaServer = new MediaServer(deviceDescription, serverUri.Host, serverUri.Port) { DeviceType = mediaDeviceType }; await mediaServer.LoadServicesAsync(); return(mediaServer); } else { MediaRenderer mediaRenderer = new MediaRenderer(deviceDescription, serverUri.Host, serverUri.Port) { DeviceType = mediaDeviceType }; await mediaRenderer.LoadServicesAsync(); mediaRenderer.DeviceType = mediaDeviceType; return(mediaRenderer); } } } } } } } } catch (Exception exception) { await UIService.ShowDialogAsync(string.Format("{0} {1}: {2}", UIService.GetResource("Error"), exception.HResult, exception.Message), "loadMediaDeviceAsync"); Logger.GetLogger().SaveMessage(exception, "loadMediaDeviceAsync"); } return(null); }
public bool Start () { if (!GConfHelper.ShareLibrary) { return false; } var udn = "uuid:" + ServiceGuid.ToString (); var friendly_name = GConfHelper.LibraryName; var manufacturer = "Mono Project"; var model_name = "Mono.Upnp.Dcp.MediaServer1.FSpot"; var manufacturer_url = new Uri ("http://www.mono-project.org/"); var model_description = "A F-Spot add-in for sharing photos over the MediaServer1 spec."; var model_number = "1"; var model_url = new Uri ("http://www.mono-project.org/Mono.Upnp"); var serial_number = "MONO-UPNP-MEDIA-SERVER-1"; string upc = null; try { var ms_media_receiver_registrar = new Service<MSMediaReceiverRegistrar> ( MSMediaReceiverRegistrar.ServiceType, "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar", new DummyMSMediaReceiverRegistrar ()); media_server = new MediaServer ( udn, friendly_name, manufacturer, model_name, new RootDeviceOptions { Services = new[] { ms_media_receiver_registrar }, ManufacturerUrl = manufacturer_url, ModelDescription = model_description, ModelNumber = model_number, ModelUrl = model_url, SerialNumber = serial_number, Upc = upc }, new DummyConnectionManager (), new FSpotContentDirectory () ); media_server.Start (); IsRunning = true; return true; } catch (Exception ex) { Console.WriteLine ("Error starting Mono.Upnp server: {0}", ex.Message); return false; } }
public static void InitializeMediaConnection(string mediaserver) { MediaConnection = new MediaServer(mediaserver); }
public Music(MediaServer mediaServer, Dlna.ContentDirectory.Item item) { this.mediaServer = mediaServer; Id = item.ID; Name = item.Title; }
static void Main(string[] args) { Console.Out.WriteLine("Use 'ls' to list the contents of a content directory."); Console.Out.WriteLine("Use 'cd X' to change into a new content directory. X is the number output by the 'ls' command."); Console.Out.WriteLine("Use 'q' to quit.\n"); Console.Out.WriteLine("Wait for a few seconds while the list of media servers populates below:\n"); string command = "ls"; List <MediaServer> servers = MediaServer.All(); int serverIndex = -1; int childIndex; List <ContentDirectory> stack = new List <ContentDirectory>(); while (command != "q") { string[] commandArgs = command.Split(' '); command = commandArgs[0]; string obj = null; if (commandArgs.Length > 1) { obj = commandArgs[1]; } switch (command) { case "ls": int i = 0; if (stack.Count == 0) { //servers = MediaServer.All(); foreach (MediaServer s in servers) { Console.Out.WriteLine(i + ": " + s.Title); i++; } } else { foreach (ContentDirectory cd in stack[stack.Count - 1].Children) { Console.Out.WriteLine(i + ": " + cd.Title); i++; } } break; case "cd": if (obj == "..") { if (stack.Count > 0) { stack.RemoveAt(stack.Count - 1); } else { break; } } else { childIndex = int.Parse(obj); if (stack.Count == 0 && childIndex < servers.Count && childIndex >= 0) { stack.Add(servers[childIndex].ContentDirectory); } else if (stack.Count == 0) { Console.Out.WriteLine("Not a valid server."); } else { stack.Add(stack[stack.Count - 1].Children[childIndex]); } } break; default: Console.Out.WriteLine("Invalid command. Try 'ls' to list the current options then 'cd X' into one of them or 'cd ..' to back up a directory."); break; } Console.Out.Write("\nEnter command (q to quit): "); command = Console.In.ReadLine(); } }
public MediaServerFoundEventArgs(MediaServer mediaServer) { MediaServer = mediaServer; }
private async void onDeviceAdded(DeviceInformation args) { // Examples of e.Value.Properties // System.Devices.ContainerId: e0acfce3-b225-4b5d-80d5-c240553ff32e // ([]) System.Devices.CompatibleIds: urn:schemas-upnp-org:device:MediaRenderer:1 // ([]) System.Devices.IpAddress: 192.168.0.18 // {A45C254E-DF1C-4EFD-8020-67D146A850E0},15: http://192.168.0.18:54797/e0acfce3-b225-4b5d-80d5-c240553ff32e.xml Guid ContainerId; string[] CompatibleIds = null; string[] IpAddress = null; string DeviceLocationInfo = null; foreach (var prop in args.Properties) { switch (prop.Key) { case "System.Devices.ContainerId": ContainerId = (Guid)prop.Value; break; case "System.Devices.CompatibleIds": CompatibleIds = prop.Value as string[]; break; case "System.Devices.IpAddress": IpAddress = prop.Value as string[]; break; case "{A45C254E-DF1C-4EFD-8020-67D146A850E0} 15": DeviceLocationInfo = prop.Value as string; break; default: break; } } //Check if Deive is a server or a renderer if ((CompatibleIds?.Count() ?? 0) > 0 && !string.IsNullOrEmpty(DeviceLocationInfo)) { MediaDeviceType mediaDeviceType; switch (CompatibleIds[0]) { case "urn:schemas-upnp-org:device:MediaServer:1": mediaDeviceType = MediaDeviceType.MediaServer; break; case "urn:schemas-upnp-org:device:MediaRenderer:1": mediaDeviceType = MediaDeviceType.MediaRenderer; break; default: mediaDeviceType = MediaDeviceType.Unknown; break; } IMediaDevice mediaDevice = await loadMediaDeviceAsync(DeviceLocationInfo, mediaDeviceType); devices[args.Id] = mediaDevice; if (mediaDeviceType == MediaDeviceType.MediaServer) { //Assign MediaServer mediaServer = mediaDevice as MediaServer; } //await getRaumfeldZones(); } }
public static void Main (string[] args) { string path = null; var udn = "uuid:" + Guid.NewGuid ().ToString (); var friendly_name = "Mono.Upnp File System MediaServer"; var manufacturer = "Mono Project"; var model_name = "Mono.Upnp.Dcp.MediaServer1.FileSystem.ConsoleClient"; var manufacturer_url = new Uri ("http://www.mono-project.org/"); var model_description = "A console client for sharing file system folders over the MediaServer1 spec."; var model_number = "1"; var model_url = new Uri ("http://www.mono-project.org/Mono.Upnp"); var serial_number = "MONO-UPNP-MEDIA-SERVER-1"; string upc = null; var help = false; var options = new OptionSet { { "p|path=", "the path of the directory to share.", v => path = v }, { "u|udn=", "the Unique Device Name of the MediaServer device.", v => udn = v }, { "f|friendly-name=", "the friendly name of the MediaServer device.", v => friendly_name = v }, { "m|manufacturer=", "The name of the MediaServer device manufacturer.", v => manufacturer = v }, { "n|name=", "the name of the MediaServer device model.", v => model_name = v }, { "manufacturer-url=", "the URL for the MediaServer device manufacturer.", v => manufacturer_url = new Uri (v) }, { "d|description=", "a description of the MediaServer device.", v => model_description = v }, { "model-number=", "the model number of the MediaServer device.", v => model_number = v }, { "model_url=", "the URL for the MediaServer device.", v => model_url = new Uri (v) }, { "serial-number=", "the serial number for the MediaServer device.", v => serial_number = v }, { "upc=", "the Universal Product Code for the MediaServer device.", v => upc = v }, { "h|?|help", "show this help message and exit.", v => help = v != null } }; List<string> extras; try { extras = options.Parse (args); } catch (Exception e) { Console.WriteLine ("mono-upnp-simple-media-server:"); Console.WriteLine (e.Message); Console.WriteLine ("Try mono-upnp-simple-media-server --help for more info."); return; } if (extras.Count == 0) { if (path == null) { path = Directory.GetCurrentDirectory (); } } else if (extras.Count == 1) { if (path != null) { Console.WriteLine ("mono-upnp-simple-media-server:"); Console.WriteLine ("You can only specify one path. You specified 2:"); Console.WriteLine ("\t" + path); Console.WriteLine ("\t" + extras[0]); Console.WriteLine ("Try mono-upnp-simple-media-server --help for more info."); return; } else { path = extras[0]; } } else { Console.WriteLine ("mono-upnp-simple-media-server:"); Console.WriteLine (string.Format ("You can only specify one path. You specified {0}:", extras.Count)); foreach (var extra in extras) { Console.WriteLine ("\t" + extra); } Console.WriteLine ("Try mono-upnp-simple-media-server --help for more info."); return; } if (help) { ShowHelp (options); return; } Console.WriteLine ("Serving " + path); var connection_manager = new DummyConnectionManager (); var content_directory = BuildContentDirectory (path); var ms_media_server_registrar = new Service<MSMediaReceiverRegistrar> ( MSMediaReceiverRegistrar.ServiceType, "urn:microsoft.com:serviceId:X_MS_MediaReceiverRegistrar", new DummyMSMediaReceiverRegistrar ()); var media_server = new MediaServer ( udn, friendly_name, manufacturer, model_name, new RootDeviceOptions { Services = new[] { ms_media_server_registrar }, ManufacturerUrl = manufacturer_url, ModelDescription = model_description, ModelNumber = model_number, ModelUrl = model_url, SerialNumber = serial_number, Upc = upc }, connection_manager, content_directory ); using (media_server) { media_server.Start (); Console.WriteLine ("Press ENTER to exit."); Console.ReadLine (); } }
internal EventArgsMediaServer(MediaServer aMediaServer) { MediaServer = aMediaServer; }
static void Main(string[] args) { while (true) { var line = Console.ReadLine(); args = line.Trim().Split(' '); string cmd = args[0].ToLowerInvariant(); if (cmd == "start") { if (GatewayServer == null) { GatewayServer = new GatewayServer(6608, 10000); GatewayServer.ClientConnected += GatewayServer_ClientConnected; GatewayServer.ClientDisconnected += GatewayServer_ClientDisconnected; GatewayServer.ClientRuntimeUpdated += GatewayServer_ClientRuntimeUpdated; } GatewayServer.Start(); if (MediaServer == null) { MediaServer = new MediaServer("Media Server", 6602); MediaServer.ClientConnected += MediaServer_ClientConnected; } MediaServer.Start(); if (MediaRtspServer == null) { MediaRtspServer = new MediaRtspServer(6601); } MediaRtspServer.Start(); } else if (cmd == "stop") { if (GatewayServer != null) { GatewayServer.Stop(); } if (MediaServer != null) { MediaServer.Stop(); } } else if (cmd == "open") { var devIDNO = args[1]; var channelNo = int.Parse(args[2]); GatewayServer.SendStartVideo(devIDNO, channelNo, ServerIp, 6602); } else if (cmd == "close") { var devIDNO = args[1]; var channelNo = int.Parse(args[2]); GatewayServer.SendStopVideo(devIDNO, channelNo, ServerIp, 6602); } } }