mirror of https://github.com/jellyfin/jellyfin.git
Merge branch 'jellyfin:master' into master
This commit is contained in:
commit
be4dfe79df
|
@ -27,11 +27,11 @@ jobs:
|
|||
dotnet-version: '8.0.x'
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11
|
||||
uses: github/codeql-action/init@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
queries: +security-extended
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11
|
||||
uses: github/codeql-action/autobuild@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11
|
||||
uses: github/codeql-action/analyze@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12
|
||||
|
|
|
@ -83,8 +83,8 @@
|
|||
<PackageVersion Include="TMDbLib" Version="2.1.0" />
|
||||
<PackageVersion Include="UTF.Unknown" Version="2.5.1" />
|
||||
<PackageVersion Include="Xunit.Priority" Version="1.1.6" />
|
||||
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.5" />
|
||||
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.6" />
|
||||
<PackageVersion Include="Xunit.SkippableFact" Version="1.4.13" />
|
||||
<PackageVersion Include="xunit" Version="2.6.3" />
|
||||
<PackageVersion Include="xunit" Version="2.6.4" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -124,5 +124,7 @@
|
|||
"TaskKeyframeExtractorDescription": "فریم های کلیدی را از فایل های ویدئویی استخراج می کند تا لیست های پخش HLS دقیق تری ایجاد کند. این کار ممکن است برای مدت طولانی اجرا شود.",
|
||||
"TaskKeyframeExtractor": "استخراج کننده فریم کلیدی",
|
||||
"External": "خارجی",
|
||||
"HearingImpaired": "مشکل شنوایی"
|
||||
"HearingImpaired": "مشکل شنوایی",
|
||||
"TaskRefreshTrickplayImages": "تولید تصاویر Trickplay",
|
||||
"TaskRefreshTrickplayImagesDescription": "تولید پیشنمایش های trickplay برای ویدیو های فعال شده در کتابخانه."
|
||||
}
|
||||
|
|
|
@ -0,0 +1,39 @@
|
|||
{
|
||||
"TasksLibraryCategory": "Գրադարան",
|
||||
"TasksApplicationCategory": "Հավելված",
|
||||
"TaskCleanActivityLog": "Մաքրել ակտիվության մատյանը",
|
||||
"Application": "Հավելված",
|
||||
"AuthenticationSucceededWithUserName": "{0} հաջողությամբ վավերականացվել են",
|
||||
"Books": "Գրքեր",
|
||||
"CameraImageUploadedFrom": "Նոր լուսանկար է վերբեռնվել {0}-ի կողմից",
|
||||
"Channels": "Ալիքներ",
|
||||
"DeviceOfflineWithName": "{0}ը անջատվեց",
|
||||
"External": "Արտաքին",
|
||||
"FailedLoginAttemptWithUserName": "Ձախողված մուտքի փործ {0}-ի կողմից",
|
||||
"Folders": "Պանակներ",
|
||||
"HeaderContinueWatching": "Շարունակել դիտումը",
|
||||
"Inherit": "Ժառանգել",
|
||||
"ItemAddedWithName": "{0}ը ավացված է գրադարանի մեջ",
|
||||
"ItemRemovedWithName": "{0}ը հեռացված է գրադարանից",
|
||||
"LabelIpAddressValue": "IP հասցե` {0}",
|
||||
"Movies": "Ֆիլմեր",
|
||||
"Music": "Երաժշտություն",
|
||||
"NameSeasonNumber": "Սեզոն {0}",
|
||||
"Photos": "Լուսանկարներ",
|
||||
"PluginInstalledWithName": "{0}ն տեղադրված է",
|
||||
"Songs": "Երգեր",
|
||||
"System": "Համակարգ",
|
||||
"TvShows": "Հեռուստասերիալներ",
|
||||
"User": "Օգտատեր",
|
||||
"VersionNumber": "Տարբերակ {0}",
|
||||
"TasksMaintenanceCategory": "Սպասարկում",
|
||||
"TasksChannelsCategory": "Ինտերնետային ալիքներ",
|
||||
"TaskRefreshPeople": "Թարմացնել մարդկանց",
|
||||
"TaskRefreshChannels": "Թարմացնել ալիքները",
|
||||
"TaskDownloadMissingSubtitles": "Ներբեռնել պակասող ենթագրերը",
|
||||
"Albums": "Ալբոմներ",
|
||||
"AppDeviceValues": "Հավելված` {0}, Սարք `{1}",
|
||||
"ChapterNameValue": "Գլուխ {0}",
|
||||
"Collections": "Հավաքածուներ",
|
||||
"DeviceOnlineWithName": "{0}-ն միացված է"
|
||||
}
|
|
@ -111,7 +111,7 @@
|
|||
"TaskCleanLogs": "Günlük Dizinini Temizle",
|
||||
"TaskRefreshLibraryDescription": "Medya kütüphanenize eklenen yeni dosyaları arar ve ortam bilgilerini yeniler.",
|
||||
"TaskRefreshLibrary": "Medya Kütüphanesini Tara",
|
||||
"TaskRefreshChapterImagesDescription": "Sahnelere ayrılmış videolar için küçük resimler oluştur.",
|
||||
"TaskRefreshChapterImagesDescription": "Bölümlere ayrılmış videolar için küçük resimler oluştur.",
|
||||
"TaskRefreshChapterImages": "Bölüm Resimlerini Çıkar",
|
||||
"TaskCleanCacheDescription": "Sistem tarafından artık ihtiyaç duyulmayan önbellek dosyalarını siler.",
|
||||
"TaskCleanActivityLog": "Etkinlik Günlüğünü Temizle",
|
||||
|
|
|
@ -696,7 +696,7 @@
|
|||
"TwoLetterISORegionName": "SI"
|
||||
},
|
||||
{
|
||||
"DisplayName": "Soomaaliya",
|
||||
"DisplayName": "Somalia",
|
||||
"Name": "SO",
|
||||
"ThreeLetterISORegionName": "SOM",
|
||||
"TwoLetterISORegionName": "SO"
|
||||
|
|
|
@ -75,12 +75,14 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.BoxSets
|
|||
var collections = new RemoteSearchResult[collectionSearchResults.Count];
|
||||
for (var i = 0; i < collectionSearchResults.Count; i++)
|
||||
{
|
||||
var result = collectionSearchResults[i];
|
||||
var collection = new RemoteSearchResult
|
||||
{
|
||||
Name = collectionSearchResults[i].Name,
|
||||
SearchProviderName = Name
|
||||
Name = result.Name,
|
||||
SearchProviderName = Name,
|
||||
ImageUrl = _tmdbClientManager.GetPosterUrl(result.PosterPath)
|
||||
};
|
||||
collection.SetProviderId(MetadataProvider.Tmdb, collectionSearchResults[i].Id.ToString(CultureInfo.InvariantCulture));
|
||||
collection.SetProviderId(MetadataProvider.Tmdb, result.Id.ToString(CultureInfo.InvariantCulture));
|
||||
|
||||
collections[i] = collection;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,12 @@ namespace MediaBrowser.Providers.Plugins.Tmdb
|
|||
/// </summary>
|
||||
public class PluginConfiguration : BasePluginConfiguration
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets a value to use as the API key for accessing TMDb. This is intentionally excluded from the
|
||||
/// settings page as the API key should not need to be changed by most users.
|
||||
/// </summary>
|
||||
public string TmdbApiKey { get; set; } = string.Empty;
|
||||
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether include adult content when searching with TMDb.
|
||||
/// </summary>
|
||||
|
|
|
@ -64,9 +64,18 @@
|
|||
|
||||
var clientConfig, pluginConfig;
|
||||
var configureImageScaling = function() {
|
||||
if (clientConfig === null || pluginConfig === null) {
|
||||
if (clientConfig === undefined || pluginConfig === undefined) {
|
||||
return;
|
||||
}
|
||||
if (Object.keys(clientConfig).length === 0) {
|
||||
clientConfig = {
|
||||
PosterSizes: [pluginConfig.PosterSize],
|
||||
BackdropSizes: [pluginConfig.BackdropSize],
|
||||
LogoSizes: [pluginConfig.LogoSize],
|
||||
ProfileSizes: [pluginConfig.ProfileSize],
|
||||
StillSizes: [pluginConfig.StillSize]
|
||||
};
|
||||
}
|
||||
|
||||
var sizeOptionsGenerator = function (size) {
|
||||
return '<option value="' + size + '">' + size + '</option>';
|
||||
|
@ -104,6 +113,15 @@
|
|||
ApiClient.fetch(request).then(function (config) {
|
||||
clientConfig = config;
|
||||
configureImageScaling();
|
||||
}, function (error) {
|
||||
error.text().then(function (contents) {
|
||||
Dashboard.alert({
|
||||
title: error.statusText,
|
||||
message: contents
|
||||
});
|
||||
clientConfig = {};
|
||||
configureImageScaling();
|
||||
});
|
||||
});
|
||||
|
||||
ApiClient.getPluginConfiguration(PluginConfig.pluginId).then(function (config) {
|
||||
|
|
|
@ -299,7 +299,7 @@ namespace MediaBrowser.Providers.Plugins.Tmdb.Movies
|
|||
|
||||
if (!string.IsNullOrWhiteSpace(person.ProfilePath))
|
||||
{
|
||||
personInfo.ImageUrl = _tmdbClientManager.GetPosterUrl(person.ProfilePath);
|
||||
personInfo.ImageUrl = _tmdbClientManager.GetProfileUrl(person.ProfilePath);
|
||||
}
|
||||
|
||||
if (person.Id > 0)
|
||||
|
|
|
@ -36,7 +36,11 @@ namespace MediaBrowser.Providers.Plugins.Tmdb
|
|||
public TmdbClientManager(IMemoryCache memoryCache)
|
||||
{
|
||||
_memoryCache = memoryCache;
|
||||
_tmDbClient = new TMDbClient(TmdbUtils.ApiKey);
|
||||
|
||||
var apiKey = Plugin.Instance.Configuration.TmdbApiKey;
|
||||
apiKey = string.IsNullOrEmpty(apiKey) ? TmdbUtils.ApiKey : apiKey;
|
||||
_tmDbClient = new TMDbClient(apiKey);
|
||||
|
||||
// Not really interested in NotFoundException
|
||||
_tmDbClient.ThrowApiExceptions = false;
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("Chrome", "mp4-h264-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mp4-hevc-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported, "Transcode")]
|
||||
[InlineData("Chrome", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.SecondaryAudioNotSupported, "Transcode")]
|
||||
[InlineData("Chrome", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported, "Remux")] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
// Firefox
|
||||
|
@ -38,7 +38,7 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("Firefox", "mp4-h264-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mp4-hevc-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported, "Transcode")]
|
||||
[InlineData("Firefox", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.SecondaryAudioNotSupported, "Transcode")]
|
||||
[InlineData("Firefox", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported, "Remux")] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
// Safari
|
||||
|
@ -89,7 +89,7 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("Chrome-NoHLS", "mp4-h264-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome-NoHLS", "mp4-hevc-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported, "Transcode", "http")]
|
||||
[InlineData("Chrome-NoHLS", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.SecondaryAudioNotSupported, "Transcode", "http")]
|
||||
[InlineData("Chrome-NoHLS", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported)] // #6450
|
||||
[InlineData("Chrome-NoHLS", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported, "Remux")] // #6450
|
||||
[InlineData("Chrome-NoHLS", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome-NoHLS", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
// TranscodeMedia
|
||||
|
@ -177,7 +177,7 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("Chrome", "mp4-h264-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mp4-hevc-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported, "Transcode")]
|
||||
[InlineData("Chrome", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode")]
|
||||
[InlineData("Chrome", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported, "Remux")] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Chrome", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
// Firefox
|
||||
|
@ -187,7 +187,7 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("Firefox", "mp4-h264-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mp4-hevc-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported, "Transcode")]
|
||||
[InlineData("Firefox", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode")]
|
||||
[InlineData("Firefox", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.ContainerNotSupported, "Remux")] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioCodecNotSupported)] // #6450
|
||||
[InlineData("Firefox", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
// Safari
|
||||
|
@ -274,13 +274,16 @@ namespace Jellyfin.Model.Tests
|
|||
[Theory]
|
||||
// Chrome
|
||||
[InlineData("Chrome", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")] // #6450
|
||||
[InlineData("Chrome", "mp4-h264-ac3-aac-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Chrome", "mp4-h264-ac3-aacExt-srt-2600k", PlayMethod.DirectStream, TranscodeReason.AudioIsExternal)] // #6450
|
||||
[InlineData("Chrome", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.SecondaryAudioNotSupported, "Transcode")]
|
||||
// Firefox
|
||||
[InlineData("Firefox", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")] // #6450
|
||||
[InlineData("Firefox", "mp4-h264-ac3-aac-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Firefox", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.Transcode, TranscodeReason.VideoCodecNotSupported | TranscodeReason.SecondaryAudioNotSupported, "Transcode")]
|
||||
// Yatse
|
||||
[InlineData("Yatse", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")] // #6450
|
||||
[InlineData("Yatse", "mp4-h264-ac3-aac-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Yatse", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")] // #6450
|
||||
// RokuSSPlus
|
||||
[InlineData("RokuSSPlus", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")] // #6450
|
||||
|
@ -291,11 +294,13 @@ namespace Jellyfin.Model.Tests
|
|||
[InlineData("AndroidTVExoPlayer", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
[InlineData("AndroidTVExoPlayer", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
// Tizen 3 Stereo
|
||||
[InlineData("Tizen3-stereo", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
[InlineData("Tizen3-stereo", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
[InlineData("Tizen3-stereo", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Tizen3-stereo", "mp4-h264-ac3-aac-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Tizen3-stereo", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
// Tizen 4 4K 5.1
|
||||
[InlineData("Tizen4-4K-5.1", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
[InlineData("Tizen4-4K-5.1", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectPlay, (TranscodeReason)0, "Remux")]
|
||||
[InlineData("Tizen4-4K-5.1", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Tizen4-4K-5.1", "mp4-h264-ac3-aac-aac-srt-2600k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
[InlineData("Tizen4-4K-5.1", "mp4-hevc-ac3-aac-srt-15200k", PlayMethod.DirectStream, TranscodeReason.SecondaryAudioNotSupported, "Remux")]
|
||||
public async Task BuildVideoItemWithDirectPlayExplicitStreams(string deviceName, string mediaSource, PlayMethod? playMethod, TranscodeReason why = default, string transcodeMode = "DirectStream", string transcodeProtocol = "")
|
||||
{
|
||||
var options = await GetMediaOptions(deviceName, mediaSource);
|
||||
|
@ -419,14 +424,7 @@ namespace Jellyfin.Model.Tests
|
|||
if (targetAudioStream?.IsExternal == false)
|
||||
{
|
||||
// Check expected audio codecs (1)
|
||||
if (streamInfo.TranscodeReasons.HasFlag(TranscodeReason.ContainerNotSupported))
|
||||
{
|
||||
Assert.Contains(targetAudioStream.Codec, streamInfo.AudioCodecs);
|
||||
}
|
||||
else
|
||||
{
|
||||
Assert.DoesNotContain(targetAudioStream.Codec, streamInfo.AudioCodecs);
|
||||
}
|
||||
Assert.DoesNotContain(targetAudioStream.Codec, streamInfo.AudioCodecs);
|
||||
}
|
||||
}
|
||||
else if (transcodeMode.Equals("Remux", StringComparison.Ordinal))
|
||||
|
|
|
@ -413,6 +413,19 @@
|
|||
}
|
||||
],
|
||||
"CodecProfiles": [
|
||||
{
|
||||
"Type": "VideoAudio",
|
||||
"Conditions": [
|
||||
{
|
||||
"Condition": "Equals",
|
||||
"Property": "IsSecondaryAudio",
|
||||
"Value": "false",
|
||||
"IsRequired": false,
|
||||
"$type": "ProfileCondition"
|
||||
}
|
||||
],
|
||||
"$type": "CodecProfile"
|
||||
},
|
||||
{
|
||||
"Type": "Video",
|
||||
"Conditions": [
|
||||
|
|
|
@ -413,6 +413,19 @@
|
|||
}
|
||||
],
|
||||
"CodecProfiles": [
|
||||
{
|
||||
"Type": "VideoAudio",
|
||||
"Conditions": [
|
||||
{
|
||||
"Condition": "Equals",
|
||||
"Property": "IsSecondaryAudio",
|
||||
"Value": "false",
|
||||
"IsRequired": false,
|
||||
"$type": "ProfileCondition"
|
||||
}
|
||||
],
|
||||
"$type": "CodecProfile"
|
||||
},
|
||||
{
|
||||
"Type": "Video",
|
||||
"Conditions": [
|
||||
|
|
|
@ -0,0 +1,102 @@
|
|||
{
|
||||
"Id": "a766d122b58e45d9492d17af77748bf5",
|
||||
"Path": "/Media/MyVideo-720p.mp4",
|
||||
"Container": "mov,mp4,m4a,3gp,3g2,mj2",
|
||||
"Size": 835317696,
|
||||
"Name": "MyVideo-720p",
|
||||
"ETag": "579a34c6d5dfb21d81539a51220b6a23",
|
||||
"RunTimeTicks": 25801230336,
|
||||
"SupportsTranscoding": true,
|
||||
"SupportsDirectStream": true,
|
||||
"SupportsDirectPlay": true,
|
||||
"SupportsProbing": true,
|
||||
"MediaStreams": [
|
||||
{
|
||||
"Codec": "h264",
|
||||
"CodecTag": "avc1",
|
||||
"Language": "eng",
|
||||
"TimeBase": "1/11988",
|
||||
"VideoRange": "SDR",
|
||||
"DisplayTitle": "720p H264 SDR",
|
||||
"NalLengthSize": "0",
|
||||
"BitRate": 2032876,
|
||||
"BitDepth": 8,
|
||||
"RefFrames": 1,
|
||||
"IsDefault": true,
|
||||
"Height": 720,
|
||||
"Width": 1280,
|
||||
"AverageFrameRate": 23.976,
|
||||
"RealFrameRate": 23.976,
|
||||
"Profile": "High",
|
||||
"Type": 1,
|
||||
"AspectRatio": "16:9",
|
||||
"PixelFormat": "yuv420p",
|
||||
"Level": 41
|
||||
},
|
||||
{
|
||||
"Codec": "ac3",
|
||||
"CodecTag": "ac-3",
|
||||
"Language": "eng",
|
||||
"TimeBase": "1/48000",
|
||||
"DisplayTitle": "En - Dolby Digital - 5.1 - Default",
|
||||
"ChannelLayout": "5.1",
|
||||
"BitRate": 384000,
|
||||
"Channels": 6,
|
||||
"SampleRate": 48000,
|
||||
"IsDefault": true,
|
||||
"Index": 1,
|
||||
"Score": 202
|
||||
},
|
||||
{
|
||||
"Codec": "aac",
|
||||
"CodecTag": "mp4a",
|
||||
"Language": "eng",
|
||||
"TimeBase": "1/48000",
|
||||
"DisplayTitle": "En - AAC - Stereo - Default",
|
||||
"ChannelLayout": "stereo",
|
||||
"BitRate": 164741,
|
||||
"Channels": 2,
|
||||
"SampleRate": 48000,
|
||||
"IsDefault": true,
|
||||
"Profile": "LC",
|
||||
"Index": 2,
|
||||
"Score": 203
|
||||
},
|
||||
{
|
||||
"Codec": "aac",
|
||||
"CodecTag": "mp4a",
|
||||
"Language": "rus",
|
||||
"TimeBase": "1/48000",
|
||||
"DisplayTitle": "Ru - AAC - Stereo - Default",
|
||||
"ChannelLayout": "stereo",
|
||||
"BitRate": 164741,
|
||||
"Channels": 2,
|
||||
"SampleRate": 48000,
|
||||
"IsDefault": false,
|
||||
"Profile": "LC",
|
||||
"Index": 3,
|
||||
"Score": 203
|
||||
},
|
||||
{
|
||||
"Codec": "srt",
|
||||
"Language": "eng",
|
||||
"TimeBase": "1/1000000",
|
||||
"localizedUndefined": "Undefined",
|
||||
"localizedDefault": "Default",
|
||||
"localizedForced": "Forced",
|
||||
"DisplayTitle": "En - Default",
|
||||
"BitRate": 92,
|
||||
"IsDefault": true,
|
||||
"Type": 2,
|
||||
"Index": 4,
|
||||
"Score": 6421,
|
||||
"IsExternal": true,
|
||||
"IsTextSubtitleStream": true,
|
||||
"SupportsExternalStream": true,
|
||||
"Path": "/Media/MyVideo-WEBDL-2160p.default.eng.srt"
|
||||
}
|
||||
],
|
||||
"Bitrate": 2590008,
|
||||
"DefaultAudioStreamIndex": 1,
|
||||
"DefaultSubtitleStreamIndex": 4
|
||||
}
|
Loading…
Reference in New Issue