diff --git a/MediaBrowser.Model/Dlna/StreamBuilder.cs b/MediaBrowser.Model/Dlna/StreamBuilder.cs index b0a3c03ea0..6edbe00daf 100644 --- a/MediaBrowser.Model/Dlna/StreamBuilder.cs +++ b/MediaBrowser.Model/Dlna/StreamBuilder.cs @@ -275,7 +275,7 @@ namespace MediaBrowser.Model.Dlna if (directPlayProfile != null) { // While options takes the network and other factors into account. Only applies to direct stream - if (IsAudioEligibleForDirectPlay(item, options.GetMaxBitrate())) + if (item.SupportsDirectStream && IsAudioEligibleForDirectPlay(item, options.GetMaxBitrate())) { playMethods.Add(PlayMethod.DirectStream); } @@ -581,6 +581,11 @@ namespace MediaBrowser.Model.Dlna return PlayMethod.DirectPlay; } } + + if (!mediaSource.SupportsDirectStream) + { + return null; + } return PlayMethod.DirectStream; } diff --git a/MediaBrowser.Model/Dto/MediaSourceInfo.cs b/MediaBrowser.Model/Dto/MediaSourceInfo.cs index cdc97b7ea7..3a9c1e7d4f 100644 --- a/MediaBrowser.Model/Dto/MediaSourceInfo.cs +++ b/MediaBrowser.Model/Dto/MediaSourceInfo.cs @@ -23,6 +23,7 @@ namespace MediaBrowser.Model.Dto public long? RunTimeTicks { get; set; } public bool ReadAtNativeFramerate { get; set; } public bool SupportsTranscoding { get; set; } + public bool SupportsDirectStream { get; set; } public VideoType? VideoType { get; set; } @@ -47,6 +48,7 @@ namespace MediaBrowser.Model.Dto RequiredHttpHeaders = new Dictionary(); PlayableStreamFileNames = new List(); SupportsTranscoding = true; + SupportsDirectStream = true; } public int? DefaultAudioStreamIndex { get; set; } diff --git a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs index 719c984bde..2880c9e16e 100644 --- a/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs +++ b/MediaBrowser.Server.Implementations/Library/MediaSourceManager.cs @@ -1,4 +1,5 @@ -using MediaBrowser.Controller.Channels; +using System.IO; +using MediaBrowser.Controller.Channels; using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Library; using MediaBrowser.Controller.MediaEncoding; @@ -11,6 +12,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; +using MediaBrowser.Model.MediaInfo; namespace MediaBrowser.Server.Implementations.Library { @@ -160,6 +162,12 @@ namespace MediaBrowser.Server.Implementations.Library foreach (var source in dynamicMediaSources) { source.SupportsTranscoding = false; + + if (source.Protocol == MediaProtocol.File) + { + source.SupportsDirectStream = File.Exists(source.Path); + } + list.Add(source); }