
-
满树和娇烂漫红 万枝丹彩灼春融
Discover techniques for streaming high-quality audio to bandwidth-limited networks and new audio codec support. We'll share some best practices for supporting the xHE-AAC, FLAC, and Apple Lossless Audio audio codecs, including limited support for multichannel AAC.
Resources
Related Videos
WWDC20
-
Search this video…
Hello and welcome to WWDC.
Hello, everyone. I hope you're having a great conference.
Now, if you're looking to improve the data efficiency, and at the same time, the fidelity of your HLS audio streams, you've found the right session. I'm Simon, and I'm a media streaming engineer here at Apple. Together, in this session, we're going to discover how to deliver a better HLS audio experience.
Before we begin, I want to say that I'm going to provide to you some additional guidance that supplements the existing HLS authoring specification for Apple devices, a document that is available at developer.apple.com. I encourage you to become familiar with the contents of that document before we get into this session. So, if you need to, by all means, pause me. I'm a video on demand. Go check that out, get familiar with the recommendations there, and come right back in here. Without further ado, let's get into it.
Today we're going to cover two topics. The first topic, I'm going to introduce to you three new audio codecs that are new to HLS in the 2020 OS releases, and then I'm going to have a conversation with you about using two of these audio codecs in a multichannel setting. Let's discover the new audio codecs for the 2020 OS releases. The first one is xHE-AAC. That stands for Extended High-Efficiency Advanced Audio Codec. And all of those adjectives are there to remind you that this audio codec is a very efficient audio codec at low to medium bit rates. Bit rates below, say, 200 kilobits per second.
The other two audio codecs that are new to the 2020 OS releases are Lossless Audio Codecs. They are FLAC, which stands for the Free Lossless Audio Codec, and Apple Lossless. xHE-AAC is new to HLS in the 2020 releases, but it was available for file-based playback in the 2019-based releases. That's iOS 13 and macOS Catalina. FLAC and Apple Lossless have been available for file-based playback for quite some time. Let's chat about the first one, xHE-AAC. xHE-AAC also has another name in the MPEG-D standard, and that's USAC, and that stands for Unified Speech and Audio Coding.
That name is there to remind you that this is also a codec that is specifically tuned to speech reproduction. It's also very good as a general-purpose audio codec. Specifically, like I said before, those low to medium data rates. Let's have a look now at how xHE-AAC compares with the AAC family at large. It's a little bit different. The AAC family starts with a codec that you're all familiar with, which is AAC-LC. That stands for AAC Low Complexity. We recommended the use of this codec to data rates as low as 96 kilobits per second.
We identify this codec using the ISO syntax for the codec attribute, which is mp4a.40.2.
This codec evolved into another codec, which is HE-AAC. That's the High-Efficiency Advanced Audio Codec. It does so with the addition of an additional coding tool called SBR. That stands for Spectral Band Replication, where high frequencies are reconstructed from lower frequencies that are present in the core AAC media encoding.
We recommended the use of HE-AAC to data rates as low as 48 kilobits per second.
You identify HE-AAC with the codec string mp4a.40.5.
But it doesn't stop there. This evolved into a version two, HE-AAC v2, with another coding tool called Parametric Stereo. Parametric Stereo reconstructs a second audio channel from a single audio channel-- a mono audio channel-- with some additional parametric data. And we recommended the use of HE-AAC v2 to data rates as low as 32 kilobits per second.
Now, that's where the interoperability ends. All three of these audio codecs have a level of interoperability. You can decode a HE-AAC v2 with a HE-AAC decoder. There is a caveat to this, of course, which is that you'll only get one channel of audio, because the earlier codecs don't know how to deal with Parametric Stereo.
So let's take a look at what xHE-AAC does.
The backwards compatibility isn't there in xHE-AAC. The coding tools remain, or are quite similar, but they're even more advanced. They've been refined. They're more efficient. It's very important, therefore, to identify xHE-AAC correctly in your master playlists, with the ISO syntax for the codec attribute being mp4a.40.42.
This is such an advanced codec, and so efficient, that we recommend it's used down to 24 kilobits per second. Another way that xHE-AAC differs from the rest of the AAC family is how the standardization bodies have approached it. Now, we've always recommended in the HLS authoring guideline to include loudness and DRC, or Dynamic Range Control, metadata. What is Dynamic Range Control? Well, it's extra metadata that allows the media system to continuously adjust the audio signal levels to reduce the level difference between loud and soft passages.
We've recommended you include this metadata, or to ensure that your program content and any interstitials within it are all normalized to the same volume level.
Our recommendations are consistent with the new standard from ANSI/CTA-2075, which also has some informative text recommending the inclusion of this metadata.
Another standard that differs from this and, in fact, goes a little bit further, is CMAF.
CMAF stands for the Common Media Application Format. It's a format that seeks to unify media encodings between MPEG-DASH and HLS. It goes a step further in this regard in that it mandates the inclusion of this metadata in your media encodings.
For the rest of the AAC family, CMAF merely recommends that you include this metadata. So the takeaway is that DRC is becoming more relevant throughout our industry, and your inclusion of this metadata is the way forward.
Let's take a look now at how HLS intends to support xHE-AAC on Apple devices. So, as I mentioned before, it's really important for xHE-AAC that we advertise its use through the codecs attribute, again, with the syntax mp4a.40.42.
AVPlayer, from the AVFoundation framework, supports mono and stereo channel configurations. There is no multichannel support at this time.
Carriage is restricted to the fragmented MP4 container type, and the only encryption mechanism supported is common encryption.
So, how can you leverage xHE-AAC in your software and services? Well, first of all, let me reiterate, it is a well-suited codec for use for data rates as low as 24 kilobits per second, all the way up to the maximum that we have recommended, AAC, at 160 kilobits per second for stereo.
And the simplest way to leverage xHE-AAC in your software and services is to add additional low bit rate audio variants to your master playlist. The motivations for doing this are twofold. One, you want to reach customers on low data rate networks. Data rate networks, and in scenarios where they would otherwise stall. The second motivation is to reach customers on data rate constricted devices-- devices that have multiple different paths of network connectivity. An example of such a device is Apple Watch. And we have another session entitled "What's New in Streaming Audio on Apple Watch," and I encourage you to check it out. But I've got an example right here. Suppose you've got an existing master playlist in your content library that advertises two audio variants. The first audio variant is leveraging HE-AAC and uses 48 kilobits per second. The second audio variant in this playlist uses AAC-LC and is at 64 kilobits per second. To reach customers on low data rate networks and prevent them from stalling during playback, and to reach customers on data rate constricted devices, you need only introduce a new variant leveraging xHE-AAC advertising its codec string correctly. And now you've got a variant at 24 kilobits per second.
There are some additional ways that you can leverage xHE-AAC in your software and services. The first way is you can parallel some or all of your AAC codecs or your AAC variants with xHE-AAC. And your motivation here is to provide high-fidelity variants for the same given bit budget.
Another way that you can leverage this codec is you could see it as an opportunity to introduce DRC support to your playlists, migrating your library to a future where DRC is becoming increasingly relevant. So, you may be wondering, how can you coerce an AVPlayer into choosing this high-fidelity audio variant over your existing set of audio variants? Well, the answer is, we've introduced a new attribute to the string tag. It's called the SCORE attribute. We detail the SCORE attribute with more detail in the session entitled "Improved Stream Authoring with HLS Tools." I encourage you to check it out. However, I've got an example right here. In this example, I've got two audio variants.
The first audio variant is advertised as xHE-AAC.
Its bit rate is advertised at 94 kilobits per second.
I've got a second audio variant at AAC-LC at 96 kilobits per second.
And I've scored the xHE-AAC higher than the AAC-LC variant.
And you might also note that the bandwidth of the xHE-AAC variant is lower than the AAC-LC variant.
Using the SCORE attribute, the AVPlayer will prefer the xHE-AAC variant where support exists.
Let's switch gears now and talk about lossless audio. The new audio codecs, as I've already mentioned, are FLAC and Apple Lossless. Both of these are open source, but they've got an advantage over the other. FLAC is in wider general use throughout the industry, whereas Apple Lossless has more established carriage in MPEG-4. How does HLS intend to support lossless audio in the 2020 OS releases on Apple devices? Well, we have to advertise its use correctly.
Again, it's very important that we advertise its use using the codec strings "fLaC" where the "L" and the "C" are capitalized, no matter how strange that looks. And for Apple Lossless, it's "alac." AVPlayer in the AVFoundation framework supports all the channel configurations from these two audio codecs, up to eight channels. More about that in just a minute.
Carriage is restricted to the fragmented MP4 container type.
And the only encryption mechanism supported is common encryption.
So, how can you leverage lossless audio in your software and services? Well, the first one is you can add additional high bit rate audio variants to your playlists. And you would only do this if you know that your customers have plentiful bandwidth.
You would only also consider this when your customers expect exceptionally high audio fidelity.
Let's now move to our second topic for this session and have a look at how we're going to use these lossless audio channels in a multichannel usage. So, as I alluded to earlier, FLAC and Apple Lossless support up to eight channels. That's in channel configurations of 5.1 and 7.1.
Now one thing to note is that the channel layouts of the two audio codecs are slightly different. And you must follow these if you want the audio to come out the right speakers. Apple Lossless requires the center channel first, then left and right. Whereas FLAC requires left and right channel first, and then the center channel. By now you'll hopefully understand that lossless audio requires a much higher data rate than we're used to with lossy audio codecs such as AAC. But how much more? If I'm going to show you how much more FLAC requires when compared to AAC-LC, I'm going to need to make a lot more space in my graph. I'm going to have to change the y-axis. Hang on a second. I'm going to do that right here.
And there we go. Okay. AAC-LC at 48 kilohertz is still 160 kilobits per second. But now that I've changed my graph around a little bit, it's really, really small. That gives me lots of space to introduce lossless audio. The lossless audio is nearly four times more. At 16 bits per sample, 48 kilohertz, we're nearly one megabit. On the high end, where we've got 24 bits per sample and 96 kilohertz sampling rate, we're pushing nearly three megabits. But it doesn't stop there. You see, lossless audio codecs like AAC, you're able to configure the encoder to deliver a specific target bit rate. You can't do that with lossless audio codecs. They will consume as much data as they need in order to deliver the audio fidelity that you have requested.
So these are average data rates. The full picture is when I add the peak data rates. Now, at the closest audio fidelity to our AAC-- that's 16 bits per sample, 48 kilohertz sampling rate-- we are over one megabit. A similar story is present in multichannel. Note that the y-axis now changed, and AAC-LC is 400 kilobits per second. The next closest in lossless is in excess of two megabits per second, and on the high end, it's eight megabits per second for 24 bits per sample, 96 kilohertz sampling rate, and six channels of audio.
So it's very important that we consider how to scale up adaptively to these very high bit rates.
And the way that we recommend you do that is include multichannel AAC in your master playlists. Apple's software package compressor can encode it.
But one thing to note about multichannel AAC is it doesn't enjoy uniform support across Apple devices. It can't be decoded to its full channel complement. On devices where it can't be decoded to its full channel complement, you'll get two channels, or stereo. But do note, this does not preclude us from the requirement of including stereo AAC for backwards compatibility. Let me demonstrate with an example. Here we've got a playlist with the media tags up top. They declare the number of channels. Let's move that out of the way because it's not really relevant to our discussion here. The highlighted variants are the variants that are eligible for playback on a device that is able to decode multichannel AAC to its full channel complement. Assuming we're on such a device, and the device has an audio route that can render multichannel audio, we can scale adaptively from HE-AAC multichannel up to AAC-LC multichannel, all the way up to two megabits per second, lossless multichannel. The same story is true of stereo.
We can scale adaptively from an AAC stereo in a low bit rate to a high stereo AAC bit rate, and then scale adaptively up to a full megabit for stereo lossless.
Now, suppose we omit the multichannel AAC from our playlist. I don't recommend this, so don't try this at home. Here's the same playlist with the multichannel AAC omitted. Again, I've got my media tags at the top, and I'm just going to remove them.
Now, if we're on a device that supports a multichannel output-- its current audio route supports multichannel rendering-- there's a single audio variant that is eligible for playback. It's the lossless audio variant, and it requires two megabits per second. If your customer cannot sustain two megabits per second, your playback or their playback will stall.
Now, because we mandate the inclusion of stereo AAC in all playlists, the playback of the stereo will still adaptively scale from a low bit rate AAC to a high bit rate AAC, all the way up to lossless stereo.
So we've learned a lot here. Let's summarize everything that we've learned.
I've introduced three new audio codecs. And we've talked about the need for including DRC metadata in your media encodings. And it's important in the industry going forward. We've also talked about the considerations for using multichannel lossless and utilizing multichannel AAC as a means to scale up to those very high data rates. So, what should you do when you get home? Well, maybe you are already home. Well, consider how to employ xHE-AAC to target customers on low throughput networks.
And then, how you can use this codec to better utilize their existing throughput to deliver better audio fidelity.
And do consider how to use lossless audio codecs if it's applicable to your software or service. I hope you've learnt lots and have a great rest of conference. And as always, we wish you safe travels home, even if that's to the adjacent room.
-
早搏心律不齐吃什么药 | 补办港澳通行证需要什么材料 | veromoda是什么牌子 | 暗网是什么意思 | 越睡越困是什么原因 |
特别提款权是什么意思 | 全脂牛奶是什么意思 | hardly什么意思 | 前列腺钙化有什么影响 | 什么什么龙什么 |
nos是什么意思 | 赶集是什么意思 | 风包念什么 | 硫磺有什么作用 | 双子和什么星座最配 |
五月十八什么星座 | tmc是什么意思 | 甲亢有什么症状表现 | 相招是什么意思 | 肠胃不好能吃什么水果 |
阳绿翡翠属于什么级别hcv8jop0ns5r.cn | 荞麦长什么样子hcv8jop3ns0r.cn | 吃李子不能吃什么hcv7jop5ns6r.cn | 眼痒痒是什么原因引起travellingsim.com | 肾病吃什么水果好hcv7jop7ns4r.cn |
遂什么意思hcv8jop4ns2r.cn | 金牛座是什么象gangsutong.com | 明目退翳什么意思hcv9jop8ns0r.cn | 外阴瘙痒是什么病cj623037.com | 家门是什么意思hcv9jop1ns9r.cn |
强肉弱食是什么意思bjcbxg.com | 小腿麻木是什么原因引起的hcv9jop7ns0r.cn | 什么叫平仓hcv8jop3ns2r.cn | 对应是什么意思hcv8jop0ns5r.cn | 香肠炒什么好吃hcv9jop4ns3r.cn |
郭靖属什么生肖hcv7jop9ns5r.cn | 什么发抖hcv8jop2ns6r.cn | 气罐和火罐有什么区别hcv8jop3ns9r.cn | 网调是什么意思hcv9jop3ns9r.cn | 胳膊麻是什么原因hcv9jop5ns0r.cn |