public UpnpManager(AppContext server) { PathLookup = new Dictionary <string, string>(); _server = server; AvailableRenderDevices = new MediaRendererDevice[0]; _initTask = Init(); }
public async Task PlayItem(PlayableItemVm playableItem, MediaRendererDevice renderDevice) { ////var metadata = await xbmcUpnp.ContentDirectory.GetMetadataToId(@"musicdb://2/1/2/2.mp3?albumartistsonly=false&albumid=2&artistid=1"); //var metadata = await _xbmcMediaServer.ContentDirectory.GetMetadataToId(@"C:\Archiv\Serien1\Californication\Staffel 1\itg-cf-s01e12.avi"); ////var metadata = await xbmcUpnp.ContentDirectory.GetMetadataToId(@"C:\Archiv\HD1\Air Force One.m2ts"); //var xMetadata = XElement.Parse(metadata); //var uri = xMetadata.Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}item").Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}res").Value; //xMetadata.Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}item").Element("{http://purl.org/dc/elements/1.1/}title").SetValue("bla"); ////uri = "http://www.w3schools.com/html/movie.mp4"; //// metadata = "<DIDL-Lite xmlns=\"urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:upnp=\"urn:schemas-upnp-org:metadata-1-0/upnp/\" xmlns:dlna=\"urn:schemas-dlna-org:metadata-1-0/\"><item id=\"musicdb://2/1/2/2.mp3?albumartistsonly=false&amp;albumid=2&amp;artistid=1\" parentID=\"musicdb://2/1/2/?albumartistsonly=false&amp;artistid=1\" restricted=\"1\"><dc:title>Sie marschieren wieder</dc:title><dc:creator>1. Mai &apos;87</dc:creator><upnp:artist>1. Mai &apos;87</upnp:artist><upnp:artist role=\"Performer\">1. Mai &apos;87</upnp:artist><upnp:artist role=\"AlbumArtist\">1. Mai &apos;87</upnp:artist><upnp:album>Rip Off</upnp:album><upnp:genre>Rock</upnp:genre><upnp:albumArtURI dlna:profileID=\"JPEG_TN\">http://192.168.178.20:1287/%25/221918E6358C9A5FC9C35376AB12213F/15%2520-%25201.%2520Mai%2520%252787%2520-%2520Sie%2520marschieren%2520wieder.mp3</upnp:albumArtURI><upnp:originalTrackNumber>10</upnp:originalTrackNumber><res protocolInfo=\"http-get:*:audio/mpeg:DLNA.ORG_PN=MP3;DLNA.ORG_OP=01;DLNA.ORG_CI=0;DLNA.ORG_FLAGS=01500000000000000000000000000000\">http://192.168.178.20:1287/%25/E4A2E930D9559EDFAEDF91745105A70E/15%2520-%25201.%2520Mai%2520%252787%2520-%2520Sie%2520marschieren%2520wieder.mp3</res><upnp:class>object.item.audioItem.musicTrack</upnp:class></item></DIDL-Lite>"; //// metadata = @"<DIDL-Lite xmlns=""urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"" xmlns:dc=""http://purl.org/dc/elements/1.1/"" xmlns:upnp=""urn:schemas-upnp-org:metadata-1-0/upnp/"" xmlns:dlna=""urn:schemas-dlna-org:metadata-1-0/""> //// <item id=""C:\\Archiv\\HD1\\Air Force One.m2ts"" parentID=""C:\\Archiv\\HD1\\"" restricted=""1""> //// <dc:title>Sie marschieren wieder</dc:title> //// <dc:creator>1. Mai '87</dc:creator> //// <upnp:artist>1. Mai '87</upnp:artist> //// <upnp:artist role=""Performer"">1. Mai '87</upnp:artist> //// <upnp:artist role=""AlbumArtist"">1. Mai '87</upnp:artist> //// <upnp:album>Rip Off</upnp:album> //// <upnp:genre>Rock</upnp:genre> //// <upnp:albumArtURI dlna:profileID=""JPEG_TN"">http://192.168.178.20:1287/%25/221918E6358C9A5FC9C35376AB12213F/15%2520-%25201.%2520Mai%2520%252787%2520-%2520Sie%2520marschieren%2520wieder.mp3</upnp:albumArtURI> //// <upnp:originalTrackNumber>10</upnp:originalTrackNumber> //// <res protocolInfo=""http-get:*:video/m2ts:*"">http://192.168.178.20:1287/%25/B4552443801113DC3FDA9E0BF33529FC/Air%2520Force%2520One.m2ts</res> //// <upnp:class>object.item.videoItem</upnp:class> //// </item> ////</DIDL-Lite>"; var metadata = await _xbmcMediaServer.ContentDirectory.GetMetadataToId(playableItem.Path); var xMetadata = XElement.Parse(metadata); var uri = xMetadata.Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}item").Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}res").Value; xMetadata.Element("{urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/}item").Element("{http://purl.org/dc/elements/1.1/}title").SetValue(playableItem.Label); metadata = xMetadata.ToString(SaveOptions.DisableFormatting); PathLookup[uri] = playableItem.Path; //await SelectedRenderDevices.AVTransport.GetMimeTypes(); await renderDevice.AVTransport.Stop(); await renderDevice.AVTransport.SetAVTransportURI(uri, metadata); await renderDevice.AVTransport.Play(); //var current = await SelectedRenderDevices.AVTransport.GetCurrentPlaybackItem(); }
public void PlayTo(MediaRendererDevice renderer) { throw new NotImplementedException(); }
public PlayToVm(PlayableItemVm playableItem, MediaRendererDevice renderer) : this(playableItem) { _renderer = renderer; Label = renderer.FriendlyName; }
public async void PlayTo(MediaRendererDevice renderer) { await _appContext.Upnp.PlayItem(this, renderer); _appContext.View.GotoCurrentPlaying(); }