update live tv playback

This commit is contained in:
Luke Pulverenti 2016-02-27 12:41:28 -05:00
parent 4320f066b7
commit accafddbbb
2 changed files with 13 additions and 6 deletions

View File

@ -350,7 +350,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
foreach (var source in list) foreach (var source in list)
{ {
Normalize(source, item.ChannelType == ChannelType.TV); Normalize(source, service, item.ChannelType == ChannelType.TV);
} }
return list; return list;
@ -379,12 +379,13 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{ {
MediaSourceInfo info; MediaSourceInfo info;
bool isVideo; bool isVideo;
ILiveTvService service;
if (isChannel) if (isChannel)
{ {
var channel = GetInternalChannel(id); var channel = GetInternalChannel(id);
isVideo = channel.ChannelType == ChannelType.TV; isVideo = channel.ChannelType == ChannelType.TV;
var service = GetService(channel); service = GetService(channel);
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId); _logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
info = await service.GetChannelStream(channel.ExternalId, mediaSourceId, cancellationToken).ConfigureAwait(false); info = await service.GetChannelStream(channel.ExternalId, mediaSourceId, cancellationToken).ConfigureAwait(false);
info.RequiresClosing = true; info.RequiresClosing = true;
@ -400,7 +401,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
{ {
var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false); var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false);
isVideo = !string.Equals(recording.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase); isVideo = !string.Equals(recording.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase);
var service = GetService(recording); service = GetService(recording);
_logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.ExternalId); _logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.ExternalId);
info = await service.GetRecordingStream(recording.ExternalId, null, cancellationToken).ConfigureAwait(false); info = await service.GetRecordingStream(recording.ExternalId, null, cancellationToken).ConfigureAwait(false);
@ -415,7 +416,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
} }
_logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info)); _logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info));
Normalize(info, isVideo); Normalize(info, service, isVideo);
var data = new LiveStreamData var data = new LiveStreamData
{ {
@ -440,7 +441,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
} }
} }
private void Normalize(MediaSourceInfo mediaSource, bool isVideo) private void Normalize(MediaSourceInfo mediaSource, ILiveTvService service, bool isVideo)
{ {
if (mediaSource.MediaStreams.Count == 0) if (mediaSource.MediaStreams.Count == 0)
{ {
@ -537,6 +538,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
mediaSource.Bitrate = total; mediaSource.Bitrate = total;
} }
} }
if (!(service is EmbyTV.EmbyTV))
{
// We can't trust that we'll be able to direct stream it through emby server, no matter what the provider says
mediaSource.SupportsDirectStream = true;
}
} }
private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, Guid parentFolderId, CancellationToken cancellationToken) private async Task<LiveTvChannel> GetChannel(ChannelInfo channelInfo, string serviceName, Guid parentFolderId, CancellationToken cancellationToken)

View File

@ -354,7 +354,7 @@ namespace MediaBrowser.WebDashboard.Api
if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase)) if (string.Equals(mode, "cordova", StringComparison.OrdinalIgnoreCase))
{ {
sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src * 'unsafe-inline' 'unsafe-eval'\">"); sb.Append("<meta http-equiv=\"Content-Security-Policy\" content=\"default-src * 'unsafe-inline' 'unsafe-eval' data:;\">");
} }
sb.Append("<link rel=\"manifest\" href=\"manifest.json\">"); sb.Append("<link rel=\"manifest\" href=\"manifest.json\">");