杜比音频和Microsoft Edge体验

流式传输在线音频和视频已被注入了很多很棒的功能。 在线体验不再仅限于两声道立体声。 杜比数字增强技术(Dolby Digital Plus)是杜比(Dolby)的高级编解码器,专门设计用于通过为流环绕声媒体提供高保真,低延迟的解决方案来增强在线体验,并且该编解码器已作为Microsoft Windows 10的标准内置。

不需要任何特殊技巧或专用插件即可通过Web浏览器体验环绕声,因为Dolby Digital Plus编解码器像其他任何编解码器一样可用于HTML5音频和视频元素。 这意味着,假设您使用的网络浏览器和操作系统支持Dolby Digital Plus编解码器,您现在就可以在线体验使用杜比环绕声媒体的乐趣。

HTML5功能检测

如果您是Web开发人员,并且想为用户提供环绕声媒体,则需要确保Dolby Digital Plus编解码器可用。 如果编解码器不可用,则需要提供备用媒体流。

毋庸置疑,运行Windows 10和Microsoft Edge浏览器的用户将能够欣赏杜比环绕声媒体流,但是需要进行功能检测才能向尽可能广泛的受众提供内容。

如果直接将媒体元素添加到HTML文档中,现代Web浏览器实际上可以代表您处理功能检测。 以下HTML片段将尝试播放Dolby Digital Plus编码的视频流,如果Dolby Digital Plus编解码器不可用,它将退回到标准的立体声编码的视频流。

<!-- 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函数。

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媒体元素,则可能已经对Web浏览器中的这种功能检测感到满意。

注意:杜比数字+(Dolby Digital Plus)技术不仅限于视频流。 如果愿意,您可以向观众提供独立的环绕声音频流。

环绕声

那么,环绕声到底是什么? 简而言之,环绕声音频流通常包含六个或八个独立的声道。 它提供了一种使听众沉浸在动态3D音景中的方法,并且是电影院和家庭娱乐系统的事实上的标准。 相反,立体声音频流仅包含两个单独的声音通道,而单声道音频流则包含一个单独的声音通道。

5.1环绕声

5.1环绕声音频流包含六个单独的声道。

前三个声音通道(LCR)位于聆听者的前方,左侧,中部和右侧。 它们提供了大多数声音,并且在大多数情况下与标准立体声左和右声道兼容。 中央声音通道通常用于对话,但是当电影中发生微妙的平移时,它也有助于使声音居中。

接下来的两个声音通道(LS和RS)位于听众的后面。 它们在环绕声音频流中提供“环绕声”,通常用于增强环境音景。 如果您想象一个电影场景,其中有人在森林中穿行,则可以使用LS和RS声音通道为鸟叫,沙沙作响,阵阵风等提供其他声音。

最后,在5.1设置中的第六个声音通道(LFE)用于低频效果。 LFE通道的主要目的是向一个或多个低音炮提供低频声音,通常是低于120Hz的任何频率。 该频道可提供巨大的胸部刺激体验,以伴随屏幕上的大型爆炸等。

7.1环绕声

7.1环绕声音频流扩展了5.1,增加了两个额外的声音通道(CL和CR),它们位于听众的两侧,总共提供了八个单独的声音通道。 这两个额外的通道通常与前声道(LCR)结合使用,以提供更大的声音角度。

演讲者位置

国际电信联盟已经标准化了环绕声扬声器相对于听众的理想位置。 下图显示了理想的标准化扬声器位置。

标准化的51个演讲者职位

(L)扬声器和 (R)扬声器之间的角度为60度,中 (C)扬声器直接位于听众的前方。 左环绕 (LS)和右环绕 (RS)扬声器的位置与中央(C)扬声器大约110度。 由于低频限制, 低频效果扬声器(LFE)(即低音炮)的位置不太重要,但通常放置在靠近收听者的位置,有时直接位于收听者的下方。

音频制作

环绕声音频流的产生超出了本文的范围,但是许多现代的声音编辑软件包(包括Audacity和Adobe Audition)允许您创建环绕声音频文件并将其导出为WAV或AIFF文件。 然后可以通过编码器或Microsoft Azure Media Encoder之类的服务(请参阅下文)推送导出的文件,以生成可通过Internet流式传输的高保真Dolby Digital Plus音频和/或视频文件。

使用Microsoft Azure媒体编码器进行编码

Microsoft Azure媒体服务提供了一个优雅的,基于任务的解决方案,用于在线编码Dolby Digital Plus音频和视频,并且Microsoft出色地为所有人提供了免费的Azure试用版。 除了免费试用外,编码(撰写时)的起价为每GB 1.99美元,这是物有所值的; 您将不再需要使用昂贵的桌面软件来将您绝妙的Dolby Digital Plus环绕声传播给大众。

下面的代码描述了使用Azure服务和Dolby Digital Plus编码器以编程方式对视频文件进行编码所需的过程,但是假定您已经具有使用Azure服务和NET的Media Services SDK的经验。

//

// 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); // Assumes 'asset' has been loaded elsewhere.

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]; // The encoded asset.



//

// 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如下。

<?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>

该配置文件可产生具有Dolby Digital Plus 5.1环绕声的H.264 720p视频。 EncoderMode属性"DolbyDigitalPlus"告诉编码器使用Dolby Digital Plus,而AudioCodingMode "Mode32"告诉编码器使用5.1环绕声。 同样,必须将LFEOn属性设置为"True"以启用低频效果(LFE)声音通道。

本文结尾的“ 资源”部分提供了其他信息。

使用Adobe Premiere Pro编码

最新版本的Adobe Premiere Pro提供对Dolby Digital Plus的支持,使您可以将5.1和7.1环绕声直接混入视频中。

本文结尾的“ 资源”部分提供了其他信息。

总结思想

作为在线音频和视频的狂热消费者,我对杜比数字+感到兴奋。 得益于Dolby出色的工作和Microsoft的支持,我们现在可以在互联网上流式传输真正的Dolby环绕声。

Lux Ahoy游戏

在线游戏,哦,是的,它们也可以从杜比环绕声中受益,如娱乐性极高的Lux Ahoy游戏所展示的那样,但是请记住,您现在必须运行Windows 10和Microsoft Edge!

最后

围绕其他专有Web技术可能存在一些争议,但是老实说,如果专有技术允许Dolby和Microsoft之类的公司向我们提供Dolby Digital Plus之类的编解码器,您将不会听到我的任何投诉。

资源资源

翻译自: https://code.tutsplus.com/articles/the-dolby-audio-and-microsoft-edge-experience--cms-24269

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
<?xml version="1.0" encoding="utf-8" ?> - <profiledata xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <format_version>4</format_version> <tool_version>3</tool_version> - <preset id="ieq_open"> <data>iebt=[117, 133, 188, 176, 141, 149, 175, 185, 185, 200, 236, 242, 228, 213, 182, 132, 110, 68, -27, -240]</data> </preset> - <preset id="ieq_rich"> <data>iebt=[67, 95, 172, 163, 168, 201, 189, 242, 196, 221, 192, 186, 168, 139, 102, 57, 35, 9, -55, -235]</data> </preset> - <preset id="ieq_focused"> <data>iebt=[-419, -112, 75, 116, 113, 160, 165, 80, 61, 79, 98, 121, 64, 70, 44, -71, -33, -100, -238, -411]</data> </preset> - <profile id="movie" name="Movie"> <data>aoon=[2] dea=[5] ded=[0] deon=[1] dhrg=[0] dhsb=[96] dssb=[96] dssf=[200] dvla=[7] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[2] vmb=[144] vmon=[0] vspe=[0]</data> <include preset="ieq_open" /> </profile> - <profile id="music" name="Music"> <data>aoon=[2] dea=[7] ded=[0] deon=[0] dhrg=[0] dhsb=[2] dssb=[0] dssf=[200] dvla=[4] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[2] vmb=[144] vmon=[0] vspe=[0]</data> <include preset="ieq_open" /> </profile> - <profile id="game" name="Game"> <data>aoon=[2] dea=[7] ded=[0] deon=[0] dhrg=[0] dhsb=[0] dssb=[0] dssf=[200] dvla=[0] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[2] vmb=[144] vmon=[0] vspe=[0]</data> <include preset="ieq_open" /> </profile> - <profile id="voice" name="Voice"> <data>aoon=[2] dea=[10] ded=[0] deon=[1] dhrg=[0] dhsb=[0] dssb=[0] dssf=[200] dvla=[0] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[0] vmb=[144] vmon=[0] vspe=[0]</data> <include preset="ieq_rich" /> </profile> - <profile id="user1" name="Custom 1"> <data>aoon=[2] dea=[7] ded=[0] deon=[0] dhrg=[0] dhsb=[48] dssb=[48] dssf=[200] dvla=[5] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[0] vmb=[144] vmon=[2] vspe=[0]</data> <include preset="ieq_rich" /> </profile> - <profile id="user2" name="Custom 2"> <data>aoon=[2] dea=[7] ded=[0] deon=[0] dhrg=[0] dhsb=[48] dssb=[48] dssf=[200] dvla=[5] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[10] ieon=[0] ngon=[2] plb=[0] plmd=[4] vdhe=[0] vmb=[144] vmon=[2] vspe=[0]</data> <include preset="ieq_rich" /> </profile> - <profile id="off" name="Off"> <data>aoon=[0] dea=[0] ded=[0] deon=[0] dhrg=[0] dhsb=[0] dssb=[0] dssf=[200] dvla=[0] dvle=[0] dvme=[0] gebg=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] geon=[0] iea=[0] ieon=[0] ngon=[0] plb=[0] plmd=[1] vdhe=[0] vmb=[0] vmon=[0] vspe=[0]</data> <include preset="ieq_open" /> </profile> - <!-- NOTE: <tuning> with endpoint other than SPEAKER do not use the band gain, UNLESS aoon is set 1 (from 2) and plmd is set to 2 (not 4). --> - <tuning id="tune0" name="DEFAULT ENDPOINT" endpoint="SPEAKER" tuned_rate="44100"> <data>aobf=[43, 129, 215, 301, 431, 603, 775, 947, 1206, 1550, 2067, 2756, 3618, 4651, 5685, 7063, 8958, 11025, 13781, 18777] aobg=[2, -240, 136, 168, 148, 156, 144, 160, 160, 160, 157, 132, 134, 82, 57, 44, 33, 35, 28, 75, 78, 3, -240, 136, 168, 148, 156, 144, 160, 160, 160, 157, 132, 134, 82, 57, 44, 33, 35, 28, 75, 78] arbf=[43, 129, 215, 301, 431, 603, 775, 947, 1206, 1550, 2067, 2756, 3618, 4651, 5685, 7063, 8958, 11025, 13781, 18777] arbh=[-960, -113, -149, -169, -255, -301, -155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] arbl=[-960, -305, -341, -361, -447, -493, -347, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192, -192] arbi=[1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] arod=[0] artp=[12] dssa=[10]</data> </tuning> - <constant> <data>aocc=[2] aonb=[20] arnb=[20] dvli=[-320] dvlo=[-320] dvmc=[0] gebf=[43, 129, 215, 301, 431, 603, 775, 947, 1206, 1550, 2067, 2756, 3618, 4651, 5685, 7063, 8958, 11025, 13781, 18777] genb=[20] iebf=[65, 136, 223, 332, 467, 634, 841, 1098, 1416, 1812, 2302, 2909, 3663, 4598, 5756, 7194, 8976, 11186, 13927, 17326] ienb=[20]</data> </constant> - <authorized_technologies sku_name="Dolby Custom SKU" device="android" bundle="dapv1"> <audio_optimizer>true</audio_optimizer> <audio_regulator>true</audio_regulator> <volume_leveler>true</volume_leveler> <volume_maximizer>true</volume_maximizer> <graphic_equalizer>true</graphic_equalizer> <intelligent_equalizer>true</intelligent_equalizer> <dialog_enhancer>true</dialog_enhancer> <surround_virtualizer_headphone>true</surround_virtualizer_headphone> <surround_virtualizer_speaker>true</surround_virtualizer_speaker> </authorized_technologies> </profiledata>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值