Fix BDMV PGS subtitles with TrueHD
Add myself CONTRIBUTORS.md
This commit is contained in:
@@ -240,6 +240,7 @@
|
||||
- [Florin-Popescu](https://github.com/Florin-Popescu)
|
||||
- [m0g3r](https://github.com/m0g3r)
|
||||
- [martin-77](https://github.com/martin-77)
|
||||
- [Oggeb1](https://github.com/Oggeb1)
|
||||
|
||||
# Emby Contributors
|
||||
|
||||
|
||||
@@ -6311,7 +6311,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
string.Join(',', overlayFilters));
|
||||
|
||||
var mapPrefix = Convert.ToInt32(state.SubtitleStream.IsExternal);
|
||||
var subtitleStreamIndex = FindIndex(state.MediaSource.MediaStreams, state.SubtitleStream);
|
||||
var subtitleStreamIndex = GetSubtitleStreamIndexForFfmpeg(state.MediaSource, state.SubtitleStream);
|
||||
var videoStreamIndex = FindIndex(state.MediaSource.MediaStreams, state.VideoStream);
|
||||
|
||||
if (hasSubs)
|
||||
@@ -7943,6 +7943,23 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||
return -1;
|
||||
}
|
||||
|
||||
public static int GetSubtitleStreamIndexForFfmpeg(MediaSourceInfo mediaSource, MediaStream subtitleStream)
|
||||
{
|
||||
var index = FindIndex(mediaSource.MediaStreams, subtitleStream);
|
||||
if (index == -1 || mediaSource.VideoType != VideoType.BluRay)
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
var hiddenStreamsBefore = mediaSource.MediaStreams.Count(s =>
|
||||
s.Type == MediaStreamType.Audio
|
||||
&& (string.Equals(s.Codec, "truehd", StringComparison.OrdinalIgnoreCase)
|
||||
|| string.Equals(s.Codec, "atmos", StringComparison.OrdinalIgnoreCase))
|
||||
&& s.Index < subtitleStream.Index);
|
||||
|
||||
return index + hiddenStreamsBefore;
|
||||
}
|
||||
|
||||
public static bool IsCopyCodec(string codec)
|
||||
{
|
||||
return string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase);
|
||||
|
||||
@@ -648,7 +648,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
List<MediaStream> subtitleStreams,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var inputPath = _mediaEncoder.GetInputArgument(mediaSource.Path, mediaSource);
|
||||
var inputPath = _mediaEncoder.GetInputPathArgument(mediaSource.Path, mediaSource);
|
||||
var outputPaths = new List<string>();
|
||||
var args = string.Format(
|
||||
CultureInfo.InvariantCulture,
|
||||
@@ -672,7 +672,7 @@ namespace MediaBrowser.MediaEncoding.Subtitles
|
||||
var outputCodec = IsCodecCopyable(subtitleStream.Codec) ? "copy" : "srt";
|
||||
// FFmpeg does not provide an .idx/.sub muxer, so VobSub streams must be written as MKS files.
|
||||
var outputFormatOption = MediaStream.IsVobSubFormat(subtitleStream.Codec) ? " -f matroska" : string.Empty;
|
||||
var streamIndex = EncodingHelper.FindIndex(mediaSource.MediaStreams, subtitleStream);
|
||||
var streamIndex = EncodingHelper.GetSubtitleStreamIndexForFfmpeg(mediaSource, subtitleStream);
|
||||
|
||||
if (streamIndex == -1)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user