[opus] Ambisonics with Head Locked Stereo to Opus Channel Mapping Family 2 for WebVR Chrome App and YouTube
contact at martinbackhaus.com
Fri Aug 7 02:10:03 UTC 2020
I am trying to encode an Opus file with Ambisonics including Head-Locked (non-diegetic) Stereo sound for a Virtual Reality 360° video.
YouTube describes the spatial audio requirements here:
It's the last list item 5.
> 5. Supported First Order Ambisonics (FOA) with Head-Locked Stereo format:
> W, Y, Z, X, L, R as a 6-channel audio track in your uploaded file, sample rate: 48 kHz
> PCM encoded audio in a MOV container:
> Sample rate: 48 kHz
> OPUS encoded audio in an MP4 container:
> Min. bitrate 768 kbps
> Channel mapping family: 2
I am trying to encode 6 Channels as Opus to an .opus and .webm file.
Until now, YouTube and Chrome Browser cannot playback the results correctly. VLC is not playing anything.
Using this MOV container and PCM works.
I am using the following ffmpeg command:
ffmpeg -i ambix_6ch_withHLS.wav -c:a libopus -b:a 768k -mapping_family 2 -y ambix.opus
The opusenc.exe binary does not mention a command line argument for channel mapping.
In this mailing list archive, Emily Bowman mentioned 19 December 2019, that Ambisonics is an API-only feature. Is this still correct?
Here's the specification:
Chapter 3.1 and 3.3 are important, also concerning Head-locked stereo.
Here's the output of opusinfo (converted from WAV using ffmpeg):
Processing file "ambix_6ch.opus"...
New logical stream (#1, serial: 20487e76): type opus
Encoded with Lavf58.45.100
User comments section follows...
encoded_by=Adobe Premiere Pro 2020.0 (Windo
Opus stream 1:
Playback gain: 0 dB
Original sample rate: 48000 Hz
Streams: 5, Coupled: 1
Channel Mapping Family: 2 Map: [2, 3, 4, 5, 0, 1]
Packet duration: 20.0ms (max), 20.0ms (avg), 20.0ms (min)
Page duration: 700.0ms (max), 609.2ms (avg), 100.0ms (min)
Total data length: 8535952 bytes (overhead: 0.466%)
Playback length: 1m:25.885s
Average bitrate: 795.1 kbit/s, w/o overhead: 791.4 kbit/s
Logical stream 1 ended
So the goal is to have this 4-channel Ambisonics track ("Ambix" ACN SN3D format, first order) with 2-channel "head locked" Stereo (total of 6 channels) encoded to opus, (and muxed to mp4), so YouTube understands it and - more important - a WebVR Chrome App.
Any encoding guide, further Opus + Ambisonics documentation would help, especially as YouTube mentions it as a supported format. Am I missing something?
Thanks and best regards,
Mail: contact at martinbackhaus.com
More information about the opus