When you visit our website, we store cookies on your browser to collect information. The information collected might relate to you, your preferences or your device, and is mostly used to make the site work as you expect it to and to provide a more personalized web experience. However, you can choose not to allow certain types of cookies, which may impact your experience of the site and the services we are able to offer. Click on the different category headings to find out more and change our default settings according to your preference. You cannot opt-out of our First Party Strictly Necessary Cookies as they are deployed in order to ensure the proper functioning of our website (such as prompting the cookie banner and remembering your settings, to log into your account, to redirect you when you log out, etc.). For more information about the First and Third Party Cookies used please follow this link.
More information
On a Mac the mp4dash command can be found in the bin folder.
Using:
mp4fragment path_to_11dot1_input.mp4 path_to_output-frag.mp4
python3 mp4-dash.py path_to_output-frag.mp4
Which creates an 'output' folder with the *.mpd stream and subfolders. I don't know how to play this file-set locally, so I upload it to a server [https://tinyurl.com/vykbtr3x] which will not play on the Chromecast nor verify using a DASH verification website, such as: http://demo.theoplayer.com/test-for-ll-dash.
Clearly, I'm missing something ...
In VLC open a network location and enter: http://localhost:8888/output/stream.mpd
8888 and User/yourname/webserver are MAMP defaults and can be changed in preferences if needed.
In VLC go to preferences/audio and click on show all. In the menu tree go to Stream Output/SOut stream/Chromecast and check Enable Audio Passthrough. Save.
In the main VLC top menu bar select Playback>Renderer>Select the Chromecast Ultra active on your Wifi network. You may need to reopen the network stream in VLC for this to take.
If the Chromecast Ultra is connected directly to an Atmos capable device i.e. AVR or Soundbar the Dolby Digital Plus Joc bitstream (Atmos) in the fragmented mp4 should decode. Don't expect this to work if the Chromecast Ultra is connected to the TV and you are using ARC to pass audio back to the AVR or Soundbar. This might work or it might not.
This whole process is a bit finicky. MP4 airplayed to an AppleTV4k is a more robust means of Atmos playback from your Mac to consumer devices but the above can work. Again it is finicky and may require some experimentation.
Hope this helps.
Best,
Adam
That is helpful, but I fear my hurdle is using Bento4. I can not find the correct command line switches to generate a valid mpd when sourcing an 11.1 audio stream. I have to hand-code the mpd using a text editor to include:
"
<AudioChannelConfiguration schemeIdUri="urn:mpeg:mpegB:cicp:ChannelConfiguration" value="6"/>
<SupplementalProperty schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"/>
<SupplementalProperty schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionComplexityIndex:2018" value="16"/>
"
At this point, I have to assume that this (even though it's needed) does not match my actual stream.
Looking through the python code, I'm not sure it's even possible.
Can I get an example, working Bento4 command line sequence from you ?
Thanks !
Mark
If there isn't already DDPlus JOC in your MP4 you would need to encode that in another application and mulitplex that separately. If you want to encode from PCM, fragment and package you might be better off doing this with AWS MediaConvert.
If you want to dig into this further yourself please have a look at the documentation and validation tools here: https://ott.dolby.com/OnDelKits/DDP/Dolby_Digital_Plus_Online_Delivery_Kit_v1.4.1/Start_Here.html
So, I think we're on to something here.
1) I was using 'mp4-dash.py' (I don't know why) and you suggested 'mp4dash' (from the bin folder) which seems to work better, but still does not write the JOC info into the mpd file.
2) I was assuming the Chromecast could play the mpd over the internet via https using the VLC app on the Chromecast itself. Can you confirm that this will *not* work ? I'm starting to see that the Chromecast needs to connect to a local desktop computer running VLC in the native OS in order to stream Atmos content.
Thanks again.
Mark
I can't confirm it won't work as I don't have the latest Chromecast Ultra with GoogleTV so haven't tried. I've asked some colleagues who may have experimented with this and I'll let you know if I hear from them with any definitive information. I would be pleasantly surprised if this works. I'm outside my area of expertise beyond the solution I've already described. Probably a better bet.
Best,
Adam
Use Shaka. Shaka can cast to ultra and it should work for Atmos. Shaka is web browser player
For stand-alone, you can use exoplayer to install apps on ultra. Exoplayer is on github if you want to download the project, install Android studio and the required dependencies, install adb tools (required to connect over wifi or USB) https://developer.android.com/studio/command-line/adb, connect the device and deploy the app.
This all starts getting very tweaky and certainly isn't the easiest way to playback MP4 from the Dolby Atmos Renderer on consumer equipment which was the intent of the original documentation. But if you have the chops and time to pull this off and want to delve in, have at it. :). Good luck.
Best,
Adam
This is a public Shaka player. If you can host your content someplace accessible you can use this web app to cast to a Chromecast Ultra.
1) In my case, Apple would play 'damaged' media, Google not. So, I was working with a non-compliant mp4 that would work in HLS but not DASH. Using the Dolby stream validator on a FILE (not a stream) was most helpful.
2) In my case, ffmpeg could not copy the Atmos data correctly. Using -c:a copy (even with -strict 2) resulted in a damaged bit stream. I killed hours before realizing this. I HAD to mux with the dolby muxer.
3) My .htaccess file did not contain a proper Access-Control-Allow-Origin flag. HLS did not seem to notice, but DASH requires it. Shaka was the only player that clued me in to this.
4) Using the Dolby stream validator on the *.mpd files showed that they did not contain the necessary '<AudioChannelConfiguration schemeIdUri="urn:mpeg:mpegB:cicp:ChannelConfiguration" value="6"/>
<SupplementalProperty schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionType:2018" value="JOC"/>
<SupplementalProperty schemeIdUri="tag:dolby.com,2018:dash:EC3_ExtensionComplexityIndex:2018" value="16"/>' and these need to be added by hand. I'm still looking for a way to generate these automatically.
5) Similarly, the *.m3u8 files needed editing as well...
6) It matters whether you name your audio files *.ac3 or *.ec3.
So, I'm AirPlaying to an AppleTV and getting 11.1 audio from an HLS stream -and- I'm casting from VLC to a Chromecast and getting 11.1 audio from a DASH stream. Both streams have video (not black). Happy dance.
... still working on getting Shaka to send Atmos audio from a web player ... Serendipitously, maybe this is already working in Windows ? Or from an Android phone ?
Thanks again.