Статьи

Dolby Audio и Microsoft Edge Experience

Потоковое аудио и видео онлайн получило огромную инъекцию. Онлайн-опыт больше не ограничивается двухканальным стереозвуком. Dolby Digital Plus, усовершенствованный кодек от Dolby, был специально разработан для улучшения работы в Интернете, предоставляя высокоточное решение с малой задержкой для потоковой передачи объемного звука, а кодек встроен в Microsoft Windows 10 в качестве стандарта.

Для прослушивания объемного звука через веб-браузер не требуется никаких специальных приемов или специальных плагинов, поскольку кодек Dolby Digital Plus доступен для аудио и видео элементов HTML5, как и любой другой кодек. Это означает, что сегодня вы можете использовать интерактивное мультимедиа Dolby Surround, если ваш веб-браузер и используемая операционная система поддерживают кодек Dolby Digital Plus.

Если вы являетесь веб-разработчиком и хотите предоставить своим пользователям носители объемного звука, вам необходимо убедиться, что кодек Dolby Digital Plus доступен. Если кодек недоступен, вам нужно будет предоставить альтернативный поток мультимедиа.

Излишне говорить, что пользователи, работающие под управлением Windows 10 и браузером Microsoft Edge, смогут наслаждаться потоками мультимедиа Dolby Surround, но для обнаружения контента требуется максимально широкая аудитория.

Современные веб-браузеры могут на самом деле иметь дело с обнаружением функций от вашего имени, если вы добавляете медиа-элементы непосредственно в HTML-документ. Следующий фрагмент HTML попытается воспроизвести видеопоток, закодированный в формате Dolby Digital Plus, и обратится к стандартному видеопотоку, закодированному в стереофоническом режиме, если кодек Dolby Digital Plus недоступен.

01
02
03
04
05
06
07
08
09
10
11
12
13
<!— A video player with standard playback controls —>
<video controls>
  <!— Dolby Digital Plus —>
  <source src=’movie_1.m4v’
          type=’video/mp4;codecs=»avc1.42E01E,ec-3″‘>
  <!— One or more alternative formats (fallbacks) —>
  <source src=’movie_2.m4v’
          type=’video/mp4;codecs=»avc1.42E01E,mp4a.40.2″‘>
 
  <div class=’no-video-support’>
    <!— The HTML5 <video> element is not supported —>
  </div>
</video>

Если вы хотите обработать обнаружение функции с помощью JavaScript, вы можете использовать функцию canPlayType , предоставляемую медиа-элементами.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
var getDDSupport = function (callback) {
     
    if (video.canPlayType(‘audio/mp4;codecs=»ec-3″‘) === » || video.canPlayType(‘audio/mp4;codecs=»ac-3″‘) === ») {
         
        supportDDPlus = false;
        callback();
         
    } else {
         
        var audio = new Audio();
        audio.muted = true;
        audio.addEventListener(‘error’, function () {
             
            supportDDPlus = false;
            callback();
             
        }, false);
         
        audio.addEventListener(‘seeked’, function () {
            supportDDPlus = true;
            callback();
        });
     
        audio.src = ‘/assets/silence.mp4’;
        audio.play();
         
        try {
            audio.currentTime = 2;
        } catch (e) {
            //eslint-disable-line no-empty
        }
         
    }
};

Это так просто. Вы также можете проверить вложенный файл silence.mp4, чтобы использовать его в своем тестировании. Обратите внимание, что использование файла Silence.mp4 связано с тем, что некоторые браузеры возвращают ложные срабатывания. Если вы раньше работали с медиа-элементами HTML5, вы, вероятно, уже знакомы с этим типом обнаружения функций в веб-браузерах.

Примечание: Dolby Digital Plus не ограничивается видеопотоками. Вы можете предоставить автономные аудиопотоки объемного звучания для своей аудитории, если хотите.

Итак, что же такое объемный звук? Короче говоря, аудиопоток объемного звука обычно состоит из шести или восьми отдельных звуковых каналов. Он обеспечивает способ погрузить слушателя в динамическое трехмерное звуковое пространство и является стандартом де-факто для кинотеатров и домашних развлекательных систем. Напротив, стереофонический аудиопоток состоит только из двух отдельных звуковых каналов, а монофонический аудиопоток состоит из одного звукового канала.

Аудиопоток объемного звука 5.1 состоит из шести отдельных звуковых каналов.

Первые три звуковых канала (LCR) расположены перед слушателем, слева, по центру и справа. Они обеспечивают большую часть звука и по большей части совместимы со стандартными стереофоническим левым и правым звуковыми каналами. Центральный звуковой канал обычно используется для диалога, но он также помогает сохранить центрирование звука при тонком панорамировании в фильме.

Следующие два звуковых канала (LS и RS) расположены позади слушателя. Они обеспечивают «объемное звучание» в аудиопотоке объемного звука и обычно используются для улучшения окружающих звуковых ландшафтов. Если вы представляете себе сцену фильма, в которой кто-то идет по лесу, можно использовать звуковые каналы LS и RS, чтобы обеспечить дополнительные звуки для птичьих звонков, шелест листьев, порывов ветра и так далее.

Наконец, шестой звуковой канал (LFE) в настройке 5.1 предназначен для низкочастотных эффектов. Основное назначение канала LFE — обеспечить низкочастотный звук, обычно на частотах ниже 120 Гц, одному или нескольким сабвуферам. Этот канал может обеспечить физический опыт грудной клетки, чтобы сопровождать большие взрывы на экране и т. Д.

Аудиопотоки объемного звука 7.1 расширяют 5.1 с добавлением двух дополнительных звуковых каналов (CL и CR), которые расположены по обе стороны от слушателя, обеспечивая в общей сложности восемь отдельных звуковых каналов. Эти два дополнительных канала обычно используются вместе с передними каналами (LCR) для обеспечения гораздо более широкого угла звука.

Идеальное расположение динамиков объемного звука относительно слушателя стандартизировано Международным союзом электросвязи. На следующем рисунке показаны идеальные стандартизированные положения колонок.

Стандартизированные 51 позиция колонок

Угол между левой (L) и правой (R) колонками составляет 60 градусов, при этом центральная (C) колонка расположена прямо перед слушателем. Левая колонка окружающего звучания (LS) и правая колонка окружающего звучания (RS) расположены примерно в 110 градусах от центральной колонки (C). Положение динамика низкочастотных эффектов (LFE), то есть сабвуфера, не слишком важно из-за ограничения низких частот, но обычно оно располагается близко к слушателю, иногда непосредственно под слушателем.

Производство аудиопотоков объемного звука выходит за рамки этой статьи, но многие современные программные пакеты для редактирования звука, включая Audacity и Adobe Audition, позволяют создавать аудиофайлы объемного звука и экспортировать их в файлы WAV или AIFF. Экспортированные файлы могут затем передаваться через кодировщик или службу, такую ​​как Microsoft Azure Media Encoder (см. Ниже), для создания высококачественных аудио- и / или видеофайлов Dolby Digital Plus, которые можно передавать через Интернет.

Microsoft Azure Media Services предоставляет элегантное решение на основе задач для кодирования аудио- и видеоданных Dolby Digital Plus в Интернете, и Microsoft была достаточно хороша, чтобы предоставить всем бесплатную пробную версию Azure. Помимо бесплатной пробной версии, стоимость кодирования (на момент написания) начинается с 1,99 долл. США за ГБ, что является отличным соотношением цены и качества; вам больше не нужно будет использовать дорогостоящее программное обеспечение для настольных компьютеров, чтобы передать фантастический объемный звук Dolby Digital Plus в массы.

В следующем коде описывается процедура, необходимая для программного кодирования видеофайла с использованием служб Azure и кодера Dolby Digital Plus, но предполагается, что у вас есть некоторый опыт использования служб Azure и SDK Media Services для NET.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
//
// Create the service context.
//
 
var context = new CloudMediaContext(
    new MediaServiceCredentials(«accountName», «accountKey»)
);
 
//
// Create the latest version of the processor.
//
 
var proc = context.MediaProcessors.
    Where(p => p.Name == «Azure Media Encoder»).
    ToList().
    OrderBy(p => new Version(p.Version)).
    LastOrDefault();
 
//
// Load the configuration file.
//
 
var conf = File.ReadAllText(«ddp720.xml»);
 
//
// Create the job.
//
 
var job = context.Jobs.Create(«identifier»);
var task = job.Tasks.addNew(«identifier», proc, conf, TaskOptions.None);
 
task.InputAssets.Add(asset);
task.OutputAssets.AddNew(«identifier», AssetCreationOptions.StorageEncrypted);
 
//
// Start the job.
//
 
job.StateChanged += new EventHandler<JobStateChangedEventArgs>(StateChanged);
job.Submit();
job.GetExecutionProgressTask(CancellationToken.None).Wait();
 
var encoded = job.OutputMediaAssets[0];
 
//
// State change handler.
//
 
void StateChanged(object sender, JobStateChangedEventArgs e) {
  switch (e.CurrentState) {
    case JobState.Finished: {
      Console.WriteLine(«Done!»);
      break;
    }
    case JobState.Canceling:
    case JobState.Processing:
    case JobState.Queued:
    case JobState.Scheduled: {
      Console.WriteLine(«Processing…»);
      break;
    }
    case JobState.Canceled:
    case JobState.Error: {
      // Handle the error or cancellation.
      break;
    }
    default: {
      break;
    }
  }
}

Файл конфигурации, ddp720.xml , который загружается в программу, выглядит следующим образом.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?xml version=»1.0″ encoding=»utf-8″?>
<Preset Version=»5.0″>
  <Job />
  <MediaFile
    DeinterlaceMode=»AutoPixelAdaptive»
    ResizeQuality=»Super»
    AudioGainLevel=»1″
    VideoResizeMode=»Stretch»>
    <OutputFormat>
      <MP4OutputFormat
        StreamCompatibility=»Standard»>
      <AudioProfile
        Condition=»SourceContainsAudio»>
        <DolbyDigitalPlusAudioProfile
          Codec=»DolbyDigitalPlus»
          EncoderMode=»DolbyDigitalPlus»
          AudioCodingMode=»Mode32″
          LFEOn=»True»
          SamplesPerSecond=»44000″
          BandwidthLimitingLowpassFilter=»True»
          DialogNormalization=»-31″>
          <Bitrate>
            <ConstantBitrate
              Bitrate=»256″
              IsTwoPass=»False»
              BufferWindow=»00:00:00″ />
          </Bitrate>
        </DolbyDigitalPlusAudioProfile>
      </AudioProfile>
        <VideoProfile
          Condition=»SourceContainsVideo»>
          <HighH264VideoProfile
            BFrameCount=»3″
            EntropyMode=»Cabac»
            RDOptimizationMode=»Speed»
            HadamardTransform=»False»
            SubBlockMotionSearchMode=»Speed»
            MultiReferenceMotionSearchMode=»Balanced»
            ReferenceBFrames=»False»
            AdaptiveBFrames=»True»
            SceneChangeDetector=»True»
            FastIntraDecisions=»False»
            FastInterDecisions=»False»
            SubPixelMode=»Quarter»
            SliceCount=»0″
            KeyFrameDistance=»00:00:05″
            InLoopFilter=»True»
            MEPartitionLevel=»EightByEight»
            ReferenceFrames=»4″
            SearchRange=»64″
            AutoFit=»True»
            Force16Pixels=»False»
            FrameRate=»0″
            SeparateFilesPerStream=»True»
            SmoothStreaming=»False»
            NumberOfEncoderThreads=»0″>
            <Streams
              AutoSize=»False»
              FreezeSort=»False»>
              <StreamInfo
                Size=»1280,720″>
                <Bitrate>
                  <ConstantBitrate
                    Bitrate=»5200″
                    IsTwoPass=»False»
                    BufferWindow=»00:00:05″ />
                </Bitrate>
              </StreamInfo>
            </Streams>
          </HighH264VideoProfile>
        </VideoProfile>
      </MP4OutputFormat>
    </OutputFormat>
  </MediaFile>
</Preset>

Этот файл конфигурации создает видео в формате H.264 720p с объемным звуком Dolby Digital Plus 5.1. EncoderMode , "DolbyDigitalPlus" , указывает кодировщику использовать Dolby Digital Plus, а AudioCodingMode , "Mode32" , указывает кодировщику использовать объемный звук 5.1. Кроме того, атрибут LFEOn должен быть установлен в "True" чтобы включить звуковой канал низкочастотных эффектов (LFE).

Дополнительная информация приведена в разделе « Ресурсы » в конце этой статьи.

Последние версии Adobe Premiere Pro поддерживают Dolby Digital Plus, позволяя вам смешивать объемный звук 5.1 и 7.1 непосредственно в видео.

Дополнительная информация приведена в разделе « Ресурсы » в конце этой статьи.

Как заядлый потребитель онлайн аудио и видео, я в восторге от Dolby Digital Plus. Сейчас мы достигли точки, когда настоящий объемный звук Dolby можно транслировать через Интернет, благодаря впечатляющей работе Dolby и поддержке Microsoft.

Игра Lux Ahoy

Онлайн-игры, о да, они также могут извлечь выгоду из объемного звучания Dolby, о чем свидетельствует очень увлекательная игра Lux Ahoy , но помните, что на данный момент вам нужно будет использовать Windows 10 и Microsoft Edge!

Могут быть некоторые разногласия вокруг другой запатентованной веб-технологии, но, если честно, если запатентованная технология позволяет таким компаниям, как Dolby и Microsoft, предоставлять нам кодеки, такие как Dolby Digital Plus, вы не будете получать никаких жалоб от меня.