play to fixes
This commit is contained in:
parent
87ebe39107
commit
7683fe878f
|
@ -24,11 +24,21 @@ namespace MediaBrowser.Dlna
|
||||||
{
|
{
|
||||||
Container = "mp3",
|
Container = "mp3",
|
||||||
Type = DlnaProfileType.Audio
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "ts",
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"mkv"},
|
Containers = new[]{"mkv"},
|
||||||
|
@ -40,6 +50,11 @@ namespace MediaBrowser.Dlna
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
MimeType = "x-msvideo",
|
MimeType = "x-msvideo",
|
||||||
Type = DlnaProfileType.Video
|
Type = DlnaProfileType.Video
|
||||||
|
},
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp4"},
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -57,11 +72,21 @@ namespace MediaBrowser.Dlna
|
||||||
{
|
{
|
||||||
Container = "mp3",
|
Container = "mp3",
|
||||||
Type = DlnaProfileType.Audio
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "ts",
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"mkv"},
|
Containers = new[]{"mkv"},
|
||||||
|
@ -73,6 +98,11 @@ namespace MediaBrowser.Dlna
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
MimeType = "x-msvideo",
|
MimeType = "x-msvideo",
|
||||||
Type = DlnaProfileType.Video
|
Type = DlnaProfileType.Video
|
||||||
|
},
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp4"},
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -89,11 +119,21 @@ namespace MediaBrowser.Dlna
|
||||||
{
|
{
|
||||||
Container = "mp3",
|
Container = "mp3",
|
||||||
Type = DlnaProfileType.Audio
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
|
new TranscodingProfile
|
||||||
|
{
|
||||||
|
Container = "ts",
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"mkv"},
|
Containers = new[]{"mkv"},
|
||||||
|
@ -105,6 +145,11 @@ namespace MediaBrowser.Dlna
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
MimeType = "x-msvideo",
|
MimeType = "x-msvideo",
|
||||||
Type = DlnaProfileType.Video
|
Type = DlnaProfileType.Video
|
||||||
|
},
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp4"},
|
||||||
|
Type = DlnaProfileType.Video
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -130,6 +175,11 @@ namespace MediaBrowser.Dlna
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
|
@ -161,6 +211,11 @@ namespace MediaBrowser.Dlna
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
|
@ -172,8 +227,7 @@ namespace MediaBrowser.Dlna
|
||||||
|
|
||||||
list.Add(new DlnaProfile
|
list.Add(new DlnaProfile
|
||||||
{
|
{
|
||||||
//Linksys DMA2100us does not need any transcoding of the formats we support statically
|
Name = "Sony Bravia (2012)",
|
||||||
Name = "Sony Bravia TV (2012)",
|
|
||||||
ClientType = "DLNA",
|
ClientType = "DLNA",
|
||||||
FriendlyName = @"BRAVIA KDL-\d{2}[A-Z]X\d5(\d|G).*",
|
FriendlyName = @"BRAVIA KDL-\d{2}[A-Z]X\d5(\d|G).*",
|
||||||
|
|
||||||
|
@ -193,6 +247,11 @@ namespace MediaBrowser.Dlna
|
||||||
|
|
||||||
DirectPlayProfiles = new[]
|
DirectPlayProfiles = new[]
|
||||||
{
|
{
|
||||||
|
new DirectPlayProfile
|
||||||
|
{
|
||||||
|
Containers = new[]{"mp3"},
|
||||||
|
Type = DlnaProfileType.Audio
|
||||||
|
},
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"avi"},
|
Containers = new[]{"avi"},
|
||||||
|
@ -273,7 +332,7 @@ namespace MediaBrowser.Dlna
|
||||||
{
|
{
|
||||||
new DirectPlayProfile
|
new DirectPlayProfile
|
||||||
{
|
{
|
||||||
Containers = new[]{"mp3", "wma", "m4a"},
|
Containers = new[]{"mp3", "wma"},
|
||||||
Type = DlnaProfileType.Audio
|
Type = DlnaProfileType.Audio
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -314,4 +373,4 @@ namespace MediaBrowser.Dlna
|
||||||
return GetDefaultProfile();
|
return GetDefaultProfile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -269,11 +269,10 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, AvCommands.BuildPost(command, service.ServiceType, url, dictionary), header)
|
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, AvCommands.BuildPost(command, service.ServiceType, url, dictionary), header)
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
if (!IsPlaying)
|
|
||||||
{
|
await Task.Delay(50).ConfigureAwait(false);
|
||||||
await Task.Delay(50).ConfigureAwait(false);
|
await SetPlay().ConfigureAwait(false);
|
||||||
await SetPlay().ConfigureAwait(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
_lapsCount = GetLapsCount();
|
_lapsCount = GetLapsCount();
|
||||||
RestartTimer();
|
RestartTimer();
|
||||||
|
@ -350,7 +349,6 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
|
|
||||||
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, RendererCommands.BuildPost(command, service.ServiceType, 1))
|
var result = await new SsdpHttpClient(_httpClient).SendCommandAsync(Properties.BaseUrl, service, command.Name, RendererCommands.BuildPost(command, service.ServiceType, 1))
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
|
|
||||||
await Task.Delay(50).ConfigureAwait(false);
|
await Task.Delay(50).ConfigureAwait(false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -799,4 +797,3 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -446,6 +446,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
nextTrack.PlayState = 1;
|
nextTrack.PlayState = 1;
|
||||||
|
_logger.Debug("{0} - SetAvTransport Uri: {1} DlnaHeaders: {2}", _device.Properties.Name, nextTrack.StreamUrl, nextTrack.DlnaHeaders);
|
||||||
await _device.SetAvTransport(nextTrack.StreamUrl, nextTrack.DlnaHeaders, nextTrack.Didl);
|
await _device.SetAvTransport(nextTrack.StreamUrl, nextTrack.DlnaHeaders, nextTrack.Didl);
|
||||||
if (nextTrack.StartPositionTicks > 0 && !nextTrack.Transcode)
|
if (nextTrack.StartPositionTicks > 0 && !nextTrack.Transcode)
|
||||||
await _device.Seek(TimeSpan.FromTicks(nextTrack.StartPositionTicks));
|
await _device.Seek(TimeSpan.FromTicks(nextTrack.StartPositionTicks));
|
||||||
|
@ -489,4 +490,3 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
if (directPlay != null)
|
if (directPlay != null)
|
||||||
{
|
{
|
||||||
playlistItem.Transcode = false;
|
playlistItem.Transcode = false;
|
||||||
playlistItem.FileFormat = Path.GetExtension(path).TrimStart('.');
|
playlistItem.FileFormat = Path.GetExtension(path);
|
||||||
playlistItem.MimeType = directPlay.MimeType;
|
playlistItem.MimeType = directPlay.MimeType;
|
||||||
return playlistItem;
|
return playlistItem;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,8 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
if (transcodingProfile != null)
|
if (transcodingProfile != null)
|
||||||
{
|
{
|
||||||
playlistItem.Transcode = true;
|
playlistItem.Transcode = true;
|
||||||
playlistItem.FileFormat = transcodingProfile.Container;
|
//Just to make sure we have a "." for the url, remove it in case a user adds it or not
|
||||||
|
playlistItem.FileFormat = "." + transcodingProfile.Container.TrimStart('.');
|
||||||
|
|
||||||
playlistItem.MimeType = transcodingProfile.MimeType;
|
playlistItem.MimeType = transcodingProfile.MimeType;
|
||||||
}
|
}
|
||||||
|
@ -77,9 +78,9 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
|
|
||||||
private static bool IsSupported(DirectPlayProfile profile, string path)
|
private static bool IsSupported(DirectPlayProfile profile, string path)
|
||||||
{
|
{
|
||||||
var mediaContainer = Path.GetExtension(path).TrimStart('.');
|
var mediaContainer = Path.GetExtension(path);
|
||||||
|
|
||||||
if (!profile.Containers.Any(i => string.Equals(i.TrimStart('.'), mediaContainer, StringComparison.OrdinalIgnoreCase)))
|
if (!profile.Containers.Any(i => string.Equals("." + i.TrimStart('.'), mediaContainer, StringComparison.OrdinalIgnoreCase)))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -97,4 +98,4 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -77,7 +77,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
internal static string GetAudioUrl(PlaylistItem item, string serverAddress)
|
internal static string GetAudioUrl(PlaylistItem item, string serverAddress)
|
||||||
{
|
{
|
||||||
if (!item.Transcode)
|
if (!item.Transcode)
|
||||||
return string.Format("{0}/audio/{1}/stream.{2}?Static=True", serverAddress, item.ItemId, item.FileFormat);
|
return string.Format("{0}/audio/{1}/stream{2}?Static=True", serverAddress, item.ItemId, item.FileFormat);
|
||||||
|
|
||||||
return string.Format("{0}/audio/{1}/stream.mp3?AudioCodec=Mp3", serverAddress, item.ItemId);
|
return string.Format("{0}/audio/{1}/stream.mp3?AudioCodec=Mp3", serverAddress, item.ItemId);
|
||||||
}
|
}
|
||||||
|
@ -100,7 +100,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
if (!item.Transcode)
|
if (!item.Transcode)
|
||||||
{
|
{
|
||||||
dlnaCommand = BuildDlnaUrl(deviceProperties.UUID, !item.Transcode, null, null, null, null, null, null, null, null, null, null, item.MimeType);
|
dlnaCommand = BuildDlnaUrl(deviceProperties.UUID, !item.Transcode, null, null, null, null, null, null, null, null, null, null, item.MimeType);
|
||||||
return string.Format("{0}/Videos/{1}/stream.{2}?{3}", serverAddress, item.ItemId, item.FileFormat, dlnaCommand);
|
return string.Format("{0}/Videos/{1}/stream{2}?{3}", serverAddress, item.ItemId, item.FileFormat, dlnaCommand);
|
||||||
}
|
}
|
||||||
var videostream = streams.Where(m => m.Type == MediaStreamType.Video).OrderBy(m => m.IsDefault).FirstOrDefault();
|
var videostream = streams.Where(m => m.Type == MediaStreamType.Video).OrderBy(m => m.IsDefault).FirstOrDefault();
|
||||||
var audiostream = streams.Where(m => m.Type == MediaStreamType.Audio).OrderBy(m => m.IsDefault).FirstOrDefault();
|
var audiostream = streams.Where(m => m.Type == MediaStreamType.Audio).OrderBy(m => m.IsDefault).FirstOrDefault();
|
||||||
|
@ -121,7 +121,7 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
}
|
}
|
||||||
|
|
||||||
dlnaCommand = BuildDlnaUrl(deviceProperties.UUID, !item.Transcode, videoCodec, audioCodec, null, null, videoBitrate, audioChannels, audioBitrate, item.StartPositionTicks, "baseline", "3", item.MimeType);
|
dlnaCommand = BuildDlnaUrl(deviceProperties.UUID, !item.Transcode, videoCodec, audioCodec, null, null, videoBitrate, audioChannels, audioBitrate, item.StartPositionTicks, "baseline", "3", item.MimeType);
|
||||||
return string.Format("{0}/Videos/{1}/stream.{2}?{3}", serverAddress, item.ItemId, item.FileFormat, dlnaCommand);
|
return string.Format("{0}/Videos/{1}/stream{2}?{3}", serverAddress, item.ItemId, item.FileFormat, dlnaCommand);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -189,4 +189,4 @@ namespace MediaBrowser.Dlna.PlayTo
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user