360 Video Conferencing with the RICOH THETA S



I think an equirectangular view of the video conference might be better than navigation. ideally, the program would have multiple windows up at the same time to show multiple points of interest in the same stream. What do you think?

In this example, using Google Hangouts, the resolution looks good. There’s an API for the Google+ Hangout platform.



Having issues getting this running. On the “npm start” command, I don’t get a gulp error, I get an error about a missing start script. Which previous step created this start script?

Here is the debug log:

0 info it worked if it ends with ok
1 verbose cli [ ‘C:\Program Files\nodejs\node.exe’,
1 verbose cli ‘C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js’,
1 verbose cli ‘start’ ]
2 info using npm@3.6.0
3 info using node@v5.7.0
4 verbose stack Error: missing script: start
4 verbose stack at run (C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:147:19)
4 verbose stack at C:\Program Files\nodejs\node_modules\npm\lib\run-script.js:57:5
4 verbose stack at C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:345:5
4 verbose stack at checkBinReferences_ (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:309:45)
4 verbose stack at final (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:343:3)
4 verbose stack at then (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:113:5)
4 verbose stack at ReadFileContext. (C:\Program Files\nodejs\node_modules\npm\node_modules\read-package-json\read-json.js:284:20)
4 verbose stack at ReadFileContext.callback (C:\Program Files\nodejs\node_modules\npm\node_modules\graceful-fs\graceful-fs.js:76:16)
4 verbose stack at FSReqWrap.readFileAfterOpen [as oncomplete] (fs.js:324:13)
5 verbose cwd C:\Users<redacted user name>\Documents\GitHub\video-streaming-sample-app\samples
6 error Windows_NT 6.1.7601
7 error argv “C:\Program Files\nodejs\node.exe” “C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js” “start”
8 error node v5.7.0
9 error npm v3.6.0
10 error missing script: start
11 error If you need help, you may report this error at:
11 error https://github.com/npm/npm/issues
12 verbose exit [ 1, true ]



There was an error in the documentation. You need to be in the sub-directory twoway when you run npm start

If you have an error message that gulp is not found, adjust your PATH to put gulp in the PATH, most likely INSTALL_DIRECTORY/video-streaming-sample-app/samples/node_modules/.bin

I fixed the documentation. Thank you for helping to debug it.


Running “npm start” in the twoway directory successfully starts the server and opens a web browser to localhost:8034.

The web page renders blank. The source of the page matches ./index.html which is in the gulp.js file as a fallback.

The chrome console shows two uncaught syntax errors, one is an “Unexpected token <” in config.js line 1. In looking at the file in the chrome window, I don’t see the error, line 1 is “<!DOCTYPE html>”. Which “config.js” is this? Chrome resouces shows “config.js” as having the same contents as ./index.html.

The second error is “CONFIG not defined” in ricohapi-webrtc.js. Probably related to the first error.

Any more info on getting this running? I’m not familiar with a lot of this.



In config.js, do you have the proper client_id and client_secret that you got from RICOH?

I’m going to post more details in a few minutes.


Yes, I inserted the tokens that I got from signing up with Ricoh.


Does that conifg.js file need to be moved to the “twoway” directory?


This is my entire config.js file with the keys cut off for security reasons:

const CONFIG = {
  clientId: 'KDPZL3tJdVSK5xm',
  clientSecret: 'frlv24a8nUH1hA',

const USER = {
  userId: '',
  userPass: '',

Can you post the contents of your config.js with line numbers. just cut off the keys to protect your security.

const CONFIG = {
  clientId: '3y-stuff-Xh',
  clientSecret: 'tx-stuff-es',

const USER = {
  userId: '',
  userPass: '',


When I use chrome browser inspect panel to look at resources and select config.js, the contents matches ./index.html. Chrome does not show the contents of my config.js file with the Ricoh IDs.



No, it’s in the directory samples

aming-sample-app/samples$ ls
common              gulpfile.js   npm-debug.log     package.json
config.js           LICENSE       oneway-broadcast  twoway
config_template.js  node_modules  oneway-watch      webpack.config.js


My samples directory looks the same as yours.


If you want to direct message me your config.js file, I can try it on my system and see if it works. At least that will eliminate one possible problem. Click on my username for the direct message option

– Craig


Can confirm with the credentials we shared with you @someotherbob that I have the WebRTC live streaming up and working. It’s not an issue with the credentials.


You’re running it on both Ubuntu 15.10 and Mac OSX, right? with Node 6.3? Firefox browser, right?


Sorry for not providing those details. Yes, correct. Ubuntu 15.10 and MacOS
X and node v6.3.0. Works with both Chrome and Netscape.


You mean Firefox, right? Any other tips?


I’m on Win7, Chrome browser.


If you’re open to using OpenTok as a streaming provider, you can check out how we did client-side stitching in one of my posts: http://lists.theta360.guide/t/making-theta-360-work-with-opentoks-client-side-webrtc-livestreaming-mobile-stitching-google-cardboard-view/986


Wonderful. Thank you for this contribution. :slight_smile: :theta: