基于Google VR SDK 的Ambisonic 音频播放Demo实现及相关文档

2017-07-11(Tue) by chenjia.me

支持播放的Ambisonic文件格式

该SDK支持两种类型的音频文件播放:

  1. 双声道的wav文件(也就是普通wav音频文件作为虚拟音频素材)
  2. 四声道的AmbiX格式的wav文件,其格式因该为:FOA,ACN,SN3D [first-order ambisonics in the AmbiX (ACN/SN3D) format]. 其中FOA表示空间音频的声道数目为4,ACN为声道的排序规则为0123,SN3D表示将4声道合成的时候四个声道计算的算法公式。

对于我们Demo,我们选择的是第二种类型,这种类型能够产生空间音频效果。

空间变化设置

我们通过公式将手机传感器的event.values数值计算为四元素,导入到GVR中的空间头盔位置中,实现转动手机即转动空间位置。

相关资料收集

  1. Spatial Audio for Android >关注点:Render an Ambisonic soundfield 是播放ambix音频,Create a Stereo Sound是播放双声道音频
  2. GvrAudioEngine
  3. spatial-audio-rfc
  4. Treasure Hunt Demo中的音频部分,这个是创建虚拟音效。https://developers.google.com/vr/android/samples/treasure-hunt#rendering_spatial_audio
  5. VR介绍视频(Google IO 2016)https://www.youtube.com/watch?v=IW4_-WWIrJE
  6. Exoplayer(Google开源的播放器,实现了空间音频的接口,不过坑还是很多)https://google.github.io/ExoPlayer/guide.html#mediasource 项目地址为:https://github.com/google/ExoPlayer/tree/86230c451007534623c68ea9eedb6d15b8ef709a/extensions/gvr 文档中是有问题了,提了issue,答复情况为:https://github.com/googlevr/gvr-android-sdk/issues/160#issuecomment-313658360
  7. Exoplayer 开发者博文,介绍了GVR接入方式,代码已经失效,参考上面的那个issue,https://medium.com/google-exoplayer/spatial-audio-with-exoplayer-and-gvr-cecb00e9da5f
  8. Ambisonic info,里面有关于Ambisonic的各种介绍信息,还有Example,不过基本都是amb(b-format),GVR不支持https://ambisonic.info/audio/johnleonard.html
  9. Spatial Media Metadata Injector VR视频文件的信息监测,能够监测MP4中压制的WAV是否是空间音频,以及它的格式https://github.com/google/spatial-media/releases
  10. 如何是有FFMPEG将ambisonic wav文件压制到MP4中 https://francois.pitie.net/2016/05/05/360-audio-youtube-upload/
  11. Ambisonic 音频下载,大部分是AMB和5.1环绕音的,GVR不能播放
  12. JS的Ambisonic播放器 https://github.com/polarch/JSAmbisonics
  13. Oculus Ambisonics Starter Pack 1.0(这里下载的示例音频都是可以播放的,facebook oculus SDK)https://developer.oculus.com/downloads/package/oculus-ambisonics-starter-pack/ 论坛信息https://forums.oculus.com/developer/discussion/44150/oculus-ambisonics-starter-pack-1-0-released
  14. 在线播放Ambisonic音频,JS已经挂掉,使用我修改的离线版本可以使用(或者手动替换404的JS)https://googlechrome.github.io/omnitone/#home
  15. Omnitone: Spatial Audio on the Web https://github.com/GoogleChrome/omnitone
  16. VRPhoto 说明了如何从传感器数据计算四元数,如何获取偏移量https://github.com/xiaoxiaoqingyi/VRPhoto http://blog.csdn.net/u010203716/article/details/72837331
  17. libsndfile 检查音频文件文件格式

WIKI相关

  1. Ambisonics 简介和解码信息https://en.wikipedia.org/wiki/Ambisonics
  2. Vorbis https://en.wikipedia.org/wiki/Vorbis >Vorbis is intended for sample rates from 8 kHz telephony to 192 kHz digital masters and a range of channel representations (monaural, polyphonic, stereo, quadraphonic, 5.1, ambisonic, or up to 255 discrete channels)

  3. 支持Ambisonic播放,转换等相关工具(大部分都是和制作有关)https://en.wikipedia.org/wiki/List_of_Ambisonic_software

  4. Ambisonic data exchange formats https://en.wikipedia.org/wiki/Ambisonic_data_exchange_formats
  5. Youtube 上传VR视频的要求 https://support.google.com/youtube/answer/6395969?hl=en
  6. 四元数 https://zh.wikipedia.org/wiki/%E5%9B%9B%E5%85%83%E6%95%B8
  7. 四元数与欧拉角(yaw roll pitch)转换公式与推导,以及它们unity中的不同http://blog.csdn.net/deller_breeze/article/details/47121561
  8. Android 传感器之方向传感器 http://blog.csdn.net/liang5630/article/details/42421765
  9. Android-传感器开发-方向判断 http://blog.csdn.net/baidu_28479651/article/details/47299927

SDK相关异常跟踪

  1. 导致音频创建失败的issue(Open)https://github.com/googlevr/gvr-android-sdk/issues/164,提到ogg/Vorbis 也有可以播放的格式
  2. 播放sd卡中音频失败,已经修复https://github.com/googlevr/gvr-android-sdk/issues/197
  3. GvrAudioSurround解析的时候出现的问题https://github.com/googlevr/gvr-android-sdk/issues/366
  4. VR Audio : APIs for sample level processinghttps://github.com/googlevr/gvr-android-sdk/issues/186

Comments