|
@@ -333,10 +333,12 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
try
|
|
|
{
|
|
|
MediaSourceInfo info;
|
|
|
+ var isVideo = true;
|
|
|
|
|
|
if (isChannel)
|
|
|
{
|
|
|
var channel = GetInternalChannel(id);
|
|
|
+ isVideo = channel.ChannelType == ChannelType.TV;
|
|
|
var service = GetService(channel);
|
|
|
_logger.Info("Opening channel stream from {0}, external channel Id: {1}", service.Name, channel.ExternalId);
|
|
|
info = await service.GetChannelStream(channel.ExternalId, null, cancellationToken).ConfigureAwait(false);
|
|
@@ -344,6 +346,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
else
|
|
|
{
|
|
|
var recording = await GetInternalRecording(id, cancellationToken).ConfigureAwait(false);
|
|
|
+ isVideo = !string.Equals(recording.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase);
|
|
|
var service = GetService(recording);
|
|
|
|
|
|
_logger.Info("Opening recording stream from {0}, external recording Id: {1}", service.Name, recording.RecordingInfo.Id);
|
|
@@ -351,7 +354,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
}
|
|
|
|
|
|
_logger.Info("Live stream info: {0}", _jsonSerializer.SerializeToString(info));
|
|
|
- Sanitize(info);
|
|
|
+ Normalize(info, isVideo);
|
|
|
|
|
|
var data = new LiveStreamData
|
|
|
{
|
|
@@ -377,25 +380,40 @@ namespace MediaBrowser.Server.Implementations.LiveTv
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void Sanitize(MediaSourceInfo mediaSource)
|
|
|
+ private void Normalize(MediaSourceInfo mediaSource, bool isVideo)
|
|
|
{
|
|
|
if (mediaSource.MediaStreams.Count == 0)
|
|
|
{
|
|
|
- mediaSource.MediaStreams.AddRange(new List<MediaStream>
|
|
|
+ if (isVideo)
|
|
|
{
|
|
|
- new MediaStream
|
|
|
+ mediaSource.MediaStreams.AddRange(new List<MediaStream>
|
|
|
{
|
|
|
- Type = MediaStreamType.Video,
|
|
|
- // Set the index to -1 because we don't know the exact index of the video stream within the container
|
|
|
- Index = -1
|
|
|
- },
|
|
|
- new MediaStream
|
|
|
+ new MediaStream
|
|
|
+ {
|
|
|
+ Type = MediaStreamType.Video,
|
|
|
+ // Set the index to -1 because we don't know the exact index of the video stream within the container
|
|
|
+ Index = -1
|
|
|
+ },
|
|
|
+ new MediaStream
|
|
|
+ {
|
|
|
+ Type = MediaStreamType.Audio,
|
|
|
+ // Set the index to -1 because we don't know the exact index of the audio stream within the container
|
|
|
+ Index = -1
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ mediaSource.MediaStreams.AddRange(new List<MediaStream>
|
|
|
{
|
|
|
- Type = MediaStreamType.Audio,
|
|
|
- // Set the index to -1 because we don't know the exact index of the audio stream within the container
|
|
|
- Index = -1
|
|
|
- }
|
|
|
- });
|
|
|
+ new MediaStream
|
|
|
+ {
|
|
|
+ Type = MediaStreamType.Audio,
|
|
|
+ // Set the index to -1 because we don't know the exact index of the audio stream within the container
|
|
|
+ Index = -1
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Clean some bad data coming from providers
|