diff options
| author | dkanada <dkanada@users.noreply.github.com> | 2020-04-11 20:10:16 +0900 |
|---|---|---|
| committer | dkanada <dkanada@users.noreply.github.com> | 2020-04-11 20:10:16 +0900 |
| commit | bd55bdb4e3ff4555a722321f92a4783f913204f3 (patch) | |
| tree | 1cdfcd2c8da8bfc79922c3bacf17d87ae448b701 /MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | |
| parent | cbe1fe2c8f82af2233201203367ba8a532dbec8b (diff) | |
| parent | 299541f1b26136ef89741f28c7949cda4e5e485f (diff) | |
merge branch master into plugin
Diffstat (limited to 'MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs')
| -rw-r--r-- | MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs index a4a7595d2..b76b52941 100644 --- a/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs +++ b/MediaBrowser.MediaEncoding/Subtitles/SubtitleEncoder.cs @@ -188,6 +188,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles using (var stream = await GetStream(path, protocol, cancellationToken).ConfigureAwait(false)) { var result = CharsetDetector.DetectFromStream(stream).Detected; + stream.Position = 0; if (result != null) { @@ -730,6 +731,14 @@ namespace MediaBrowser.MediaEncoding.Subtitles { var charset = CharsetDetector.DetectFromStream(stream).Detected?.EncodingName; + // UTF16 is automatically converted to UTF8 by FFmpeg, do not specify a character encoding + if ((path.EndsWith(".ass") || path.EndsWith(".ssa")) + && (string.Equals(charset, "utf-16le", StringComparison.OrdinalIgnoreCase) + || string.Equals(charset, "utf-16be", StringComparison.OrdinalIgnoreCase))) + { + charset = ""; + } + _logger.LogDebug("charset {0} detected for {Path}", charset ?? "null", path); return charset; @@ -745,15 +754,17 @@ namespace MediaBrowser.MediaEncoding.Subtitles { Url = path, CancellationToken = cancellationToken, + + // Needed for seeking BufferContent = true }; return _httpClient.Get(opts); - case MediaProtocol.File: - return Task.FromResult<Stream>(File.OpenRead(path)); - default: - throw new ArgumentOutOfRangeException(nameof(protocol)); + case MediaProtocol.File: + return Task.FromResult<Stream>(File.OpenRead(path)); + default: + throw new ArgumentOutOfRangeException(nameof(protocol)); } } } |
