Implement preferred audio languages feature: update site settings to include preferred audio languages, modify related data structures and API endpoints, and enhance media processing to select audio tracks based on user preferences. Update frontend components for managing and displaying these settings.
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
namespace TeleWave.Application.Media;
|
||||
|
||||
/// <summary>
|
||||
/// Выбор аудиодорожки при обработке по предпочитаемым языкам. Чистая логика (без ffmpeg/БД) — общая
|
||||
/// точка для медиа-процессора и тестов.
|
||||
/// </summary>
|
||||
public static class AudioTrackSelector
|
||||
{
|
||||
/// <summary>
|
||||
/// Возвращает порядковый номер аудиодорожки (0:a:N) по предпочитаемым языкам: побеждает первый
|
||||
/// язык из списка <paramref name="preferred"/>, для которого есть дорожка (среди таких — первая по
|
||||
/// порядку). Нет совпадений / нет предпочтений / меньше двух дорожек — null (дефолтная эвристика
|
||||
/// ffmpeg: пусть выбирает сам).
|
||||
/// </summary>
|
||||
public static int? Select(
|
||||
IReadOnlyList<string?> audioLanguages,
|
||||
IReadOnlyList<string> preferred
|
||||
)
|
||||
{
|
||||
if (audioLanguages.Count < 2 || preferred.Count == 0)
|
||||
return null;
|
||||
|
||||
foreach (var lang in preferred)
|
||||
for (var i = 0; i < audioLanguages.Count; i++)
|
||||
if (string.Equals(audioLanguages[i], lang, StringComparison.OrdinalIgnoreCase))
|
||||
return i;
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user