Exemplo n.º 1
0
        public List <SubtitleStreamInfo> GetSubtitleProfiles(ITranscoderSupport transcoderSupport, bool includeSelectedTrackOnly, bool enableAllProfiles, string baseUrl, string accessToken)
        {
            List <SubtitleStreamInfo> list = new List <SubtitleStreamInfo>();

            // HLS will preserve timestamps so we can just grab the full subtitle stream
            long startPositionTicks = StringHelper.EqualsIgnoreCase(SubProtocol, "hls")
                ? 0
                : (PlayMethod == PlayMethod.Transcode && !CopyTimestamps ? StartPositionTicks : 0);

            // First add the selected track
            if (SubtitleStreamIndex.HasValue)
            {
                foreach (MediaStream stream in MediaSource.MediaStreams)
                {
                    if (stream.Type == MediaStreamType.Subtitle && stream.Index == SubtitleStreamIndex.Value)
                    {
                        AddSubtitleProfiles(list, stream, transcoderSupport, enableAllProfiles, baseUrl, accessToken, startPositionTicks);
                    }
                }
            }

            if (!includeSelectedTrackOnly)
            {
                foreach (MediaStream stream in MediaSource.MediaStreams)
                {
                    if (stream.Type == MediaStreamType.Subtitle && (!SubtitleStreamIndex.HasValue || stream.Index != SubtitleStreamIndex.Value))
                    {
                        AddSubtitleProfiles(list, stream, transcoderSupport, enableAllProfiles, baseUrl, accessToken, startPositionTicks);
                    }
                }
            }

            return(list);
        }
Exemplo n.º 2
0
        public List <SubtitleStreamInfo> GetExternalSubtitles(ITranscoderSupport transcoderSupport, bool includeSelectedTrackOnly, bool enableAllProfiles, string baseUrl, string accessToken)
        {
            List <SubtitleStreamInfo> list    = GetSubtitleProfiles(transcoderSupport, includeSelectedTrackOnly, enableAllProfiles, baseUrl, accessToken);
            List <SubtitleStreamInfo> newList = new List <SubtitleStreamInfo>();

            // First add the selected track
            foreach (SubtitleStreamInfo stream in list)
            {
                if (stream.DeliveryMethod == SubtitleDeliveryMethod.External)
                {
                    newList.Add(stream);
                }
            }

            return(newList);
        }
Exemplo n.º 3
0
        private SubtitleStreamInfo GetSubtitleStreamInfo(MediaStream stream, string baseUrl, string accessToken, long startPositionTicks, SubtitleProfile[] subtitleProfiles, ITranscoderSupport transcoderSupport)
        {
            SubtitleProfile    subtitleProfile = StreamBuilder.GetSubtitleProfile(MediaSource, stream, subtitleProfiles, PlayMethod, transcoderSupport, SubProtocol, Container);
            SubtitleStreamInfo info            = new SubtitleStreamInfo
            {
                IsForced       = stream.IsForced,
                Language       = stream.Language,
                Name           = stream.Language ?? "Unknown",
                Format         = subtitleProfile.Format,
                Index          = stream.Index,
                DeliveryMethod = subtitleProfile.Method,
                DisplayTitle   = stream.DisplayTitle
            };

            if (info.DeliveryMethod == SubtitleDeliveryMethod.External)
            {
                if (MediaSource.Protocol == MediaProtocol.File || !StringHelper.EqualsIgnoreCase(stream.Codec, subtitleProfile.Format) || !stream.IsExternal)
                {
                    info.Url = string.Format("{0}/Videos/{1}/{2}/Subtitles/{3}/{4}/Stream.{5}",
                                             baseUrl,
                                             ItemId,
                                             MediaSourceId,
                                             stream.Index.ToString(CultureInfo.InvariantCulture),
                                             startPositionTicks.ToString(CultureInfo.InvariantCulture),
                                             subtitleProfile.Format);

                    if (!string.IsNullOrEmpty(accessToken))
                    {
                        info.Url += "?api_key=" + accessToken;
                    }

                    info.IsExternalUrl = false;
                }
                else
                {
                    info.Url           = stream.Path;
                    info.IsExternalUrl = true;
                }
            }

            return(info);
        }
Exemplo n.º 4
0
        private void AddSubtitleProfiles(List <SubtitleStreamInfo> list, MediaStream stream, ITranscoderSupport transcoderSupport, bool enableAllProfiles, string baseUrl, string accessToken, long startPositionTicks)
        {
            if (enableAllProfiles)
            {
                foreach (SubtitleProfile profile in DeviceProfile.SubtitleProfiles)
                {
                    SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks, new[] { profile }, transcoderSupport);

                    list.Add(info);
                }
            }
            else
            {
                SubtitleStreamInfo info = GetSubtitleStreamInfo(stream, baseUrl, accessToken, startPositionTicks, DeviceProfile.SubtitleProfiles, transcoderSupport);

                list.Add(info);
            }
        }
Exemplo n.º 5
0
 public List <SubtitleStreamInfo> GetSubtitleProfiles(ITranscoderSupport transcoderSupport, bool includeSelectedTrackOnly, string baseUrl, string accessToken)
 {
     return(GetSubtitleProfiles(transcoderSupport, includeSelectedTrackOnly, false, baseUrl, accessToken));
 }
Exemplo n.º 6
0
 public StreamBuilder(ITranscoderSupport transcoderSupport, ILogger logger)
     : this(new NullLocalPlayer(), transcoderSupport, logger)
 {
 }
Exemplo n.º 7
0
 public StreamBuilder(ILocalPlayer localPlayer, ITranscoderSupport transcoderSupport, ILogger logger)
 {
     _transcoderSupport = transcoderSupport;
     _localPlayer       = localPlayer;
     _logger            = logger;
 }
Exemplo n.º 8
0
 public StreamBuilder(ITranscoderSupport transcoderSupport, ILogger logger)
 {
     _transcoderSupport = transcoderSupport;
     _logger = logger;
 }
Exemplo n.º 9
0
 public StreamBuilder(ITranscoderSupport transcoderSupport, ILogger logger)
     : this(new NullLocalPlayer(), transcoderSupport, logger)
 {
 }