soliton4 / nodeMirror

node.js + CodeMirror = powerful ide
Other
155 stars 24 forks source link

Can't build nodeMirror #15

Closed cyberork closed 10 years ago

cyberork commented 10 years ago

Love your x11terminal forwarding and started playing with it, but I do have problems building it.

  1. Downloading the release via npm worked fine and I could start up the server as well as connect via firefox and forward the x-console to firefox just fine.
  2. Building nodeMirror
  3. cloned your repository via git clone https://github.com/soliton4/nodeMirror.git
  4. cd build; ./build.sh complains about missing all kinds of dojo related files (i.e. ../release/client/dojo/dojo.js). I do see these files when browsing through the nodeMirror repository online but when cloning, those files aren't in my clone.

Do I miss something ?

soliton4 commented 10 years ago

hi @cyberork and thanks for your interest in nodeMirror. the x11 console is my pride right now and i am allways open for suggestions/bugreports i recently added firefox support and updated the codec to the newest version.

yeah you are missing something. and i noticed that there should be a wiki page for this.

  1. git clone ... yada yada
  2. cd nodeMirror
  3. git submodule init
  4. git submodule update
  5. npm install
  6. cd build
  7. ./build.sh

the build will be created in a directory called release

pls note that i only fix build step errors when i create a build myself so it could be that your build wont work. let me know. (you would not the first who stumbles over this)

try out the new x11 console implementation i commited yesterday. hope it works fine for you i can display my 720p desktop at 25 fps. but only on firefox and i am using a brand new i7

cyberork commented 10 years ago

Hey Strahlemann,

Great, thanks for your quick response, I'll give it a try as soon as I have some time.

X11 low latency remoting is a pretty interesting thing in itself, how about just have that as a separate project from nodeMirror? It should be fairly straight forward based on what you have within nodeMirror. I saw that you are using stdout to pipe avconv's stream to broadway,js, wouldn't a rtsp or UDP based protocol be quicker ? I wonder how much latency using Unix pipes add to that ?

Did you look deeper into broadway.js and the h.264 decoder code itself ?

In any case, nice work,

Thomas

On Sun, Feb 23, 2014 at 5:56 PM, soliton4 notifications@github.com wrote:

hi @cyberork https://github.com/cyberork and thanks for your interest in nodeMirror. the x11 console is my pride right now and i am allways open for suggestions/bugreports i recently added firefox support and updated the codec to the newest version.

yeah you are missing something. and i noticed that there should be a wiki page for this.

  1. git clone ... yada yada
  2. cd nodeMirror
  3. git submodule init
  4. git submodule update
  5. npm install
  6. cd build
  7. ./build.sh

the build will be created in a directory called release

pls note that i only fix build step errors when i create a build myself so it could be that your build wont work. let me know. (you would not the first who stumbles over this)

try out the new x11 console implementation i commited yesterday. hope it works fine for you i can display my 720p desktop at 25 fps. but only on firefox and i am using a brand new i7

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-35850286 .

soliton4 commented 10 years ago

the pipe and network latency is really not the issue. the main latency comes from the codec itself. h264 has the best latency i know so far but you need to get high framerates. well you have seen the video.

a stand alone x11 terminal - why not. maybe some later time. besides you can just use nodeMirror for stand alone x11 by only using the terminal module.

soliton4 commented 10 years ago

i created some resources fyi https://github.com/soliton4/nodeMirror/wiki/_pages

did you successfully build?

i just published a new npm version. so firefox x11 should work now out of the box (hopefully...)

cyberork commented 10 years ago

Cool, I'll definitely check it out...

I haven 't build yet but I hope I will have the time to do so in the next couple of days, as soon as I have some time.

Did you try to build it on OS X yet?

Sent from my iPhone

On Feb 24, 2014, at 14:49, soliton4 notifications@github.com wrote:

i created some resources fyi https://github.com/soliton4/nodeMirror/wiki/_pages

did you successfully build?

i just published a new npm version. so firefox x11 should work now out of the box (hopefully...)

— Reply to this email directly or view it on GitHub.

soliton4 commented 10 years ago

i did not try it but in principal it should work. a colleague of mine did a similar build on os x and it worked. let me know if there are any show stoppers

cyberork commented 10 years ago

I checked out your latest bits it does work with ogg encoding but takes forever to get an update with h264. I assume this is related to the fact that I use a 2560x1600 display, so I am going to force nodeMirror to just encode a portion of the desktop after I had a chance build it. In your video you are changing the resolution parameters (x,y) in x11Fun, is that where I should change it too?

Thomas

On Tue, Feb 25, 2014 at 11:49 AM, soliton4 notifications@github.com wrote:

i did not try it but in principal it should work. a colleague of mine did a similar build on os x and it worked. let me know if there are any show stoppers

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36043098 .

soliton4 commented 10 years ago

yeah line 54 / 55 //def.resolve({ x: 300, y: 150 });

you can also define a offset but for that you need to change the avconv parameter

the h265 process is called in terminal.js the ogg/webm are in server.js

you can add some threads to the ogg/webm then you should have nice fullscreen encoding.

cyberork commented 10 years ago

Thanks,

btw I got your latest working now with good performance running on a local browser and remoting from an OSX client, both were working at 20-25fps for a while and then I got really spotty even though I just went through a local wired (not wireless) network. And after a while it stopped working completely. Did you see anything like that or could you run your remoting session over a longer period of time?

How do you start multiple threads for ogg/webm?

Keep you posted.

Best,

Thomas

On Tue, Feb 25, 2014 at 3:32 PM, soliton4 notifications@github.com wrote:

yeah line 54 / 55 //def.resolve({ x: 300, y: 150 });

you can also define a offset but for that you need to change the avconv parameter

the h265 process is called in terminal.js the ogg/webm are in server.js

you can add some threads to the ogg/webm then you should have nice fullscreen encoding.

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36067111 .

soliton4 commented 10 years ago

if your client is not able to handle all the rendering the video stream might break up. take in consideration that its not multithreaded right now. the streams are created in parts of 180 seconds. after 175 seconds a 2nd stream will start and as soon as its ready it takes over. so if your stream breaks up it should restart after 1 - 2 min. for the ogg/webm there is also code that restarts if a stream error happens or if nothing is received for a few seconds. maybe we just need more failsafe code.

the best i could do so far was 25fps on 1280x800 on a i7 4770s machine. for h264 the critical part is browser rendering. you get decent latency if you use webm with 45 fps. u just need to get it encoded fast but that should be possible multithreaded.

look for the avconv parameter generation.

there is a -threads parameter -threads 8 should maybe help you out.

i am working on sound right now. unfortunately sound latency is huge

On Wed, Feb 26, 2014 at 7:38 AM, Thomas Ruge notifications@github.comwrote:

Thanks,

btw I got your latest working now with good performance running on a local browser and remoting from an OSX client, both were working at 20-25fps for a while and then I got really spotty even though I just went through a local wired (not wireless) network. And after a while it stopped working completely. Did you see anything like that or could you run your remoting session over a longer period of time?

How do you start multiple threads for ogg/webm?

Keep you posted.

Best,

Thomas

On Tue, Feb 25, 2014 at 3:32 PM, soliton4 notifications@github.com wrote:

yeah line 54 / 55 //def.resolve({ x: 300, y: 150 });

you can also define a offset but for that you need to change the avconv parameter

the h265 process is called in terminal.js the ogg/webm are in server.js

you can add some threads to the ogg/webm then you should have nice fullscreen encoding.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36067111>

.

— Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36095723 .

soliton4 commented 10 years ago

i got 500ms latency with webm on 60fps had to increase threads to 8 and it costs half my cpu but its working even with watching full screen movie.

so if you are aiming for huge screens webm is my recommendation for now. if you need low latency on a small screen and want the client to have the cpu cost use h264

cyberork commented 10 years ago

Thanks for that info

Btw, would you be interested in a small but paid consulting project ? If yes, let me know and let's get on the phone/skype. Uebrigens ich bin selber Deutsch, d.h. wir koennen am Telefon auf deutsch sprechen.

Viele Gruesse,

Thomas

On Wed, Feb 26, 2014 at 2:51 AM, soliton4 notifications@github.com wrote:

i got 500ms latency with webm on 60fps had to increase threads to 8 and it costs half my cpu but its working even with watching full screen movie.

so if you are aiming for huge screens webm is my recommendation for now. if you need low latency on a small screen and want the client to have the cpu cost use h264

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36108217 .

cyberork commented 10 years ago

Hi Soliton4,

I finally got around trying to build, I followed the instructions you sent but ran into some errors (attached) related to not finding some directories. Is there anything I am missing ?

Thanks,

Thomas

On Sun, Mar 2, 2014 at 6:42 PM, Thomas Ruge cyberork@gmail.com wrote:

Thanks for that info

Btw, would you be interested in a small but paid consulting project ? If yes, let me know and let's get on the phone/skype. Uebrigens ich bin selber Deutsch, d.h. wir koennen am Telefon auf deutsch sprechen.

Viele Gruesse,

Thomas

On Wed, Feb 26, 2014 at 2:51 AM, soliton4 notifications@github.comwrote:

i got 500ms latency with webm on 60fps had to increase threads to 8 and it costs half my cpu but its working even with watching full screen movie.

so if you are aiming for huge screens webm is my recommendation for now. if you need low latency on a small screen and want the client to have the cpu cost use h264

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36108217 .

mkdir: cannot create directory ‘../release’: File exists

server build

processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/build/server.profile.js info(107) Package Version: package: dojo; version: 1.10.0-pre processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dojo/dojo.profile.js info(107) Package Version: package: dijit; version: 1.10.0-pre processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dijit/dijit.profile.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/main/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/server/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/modules/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/sol/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/term/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/codemirror/package.js info(107) Package Version: package: dgrid; version: 0.3.7 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dgrid/package.js info(107) Package Version: package: put-selector; version: 0.3.4 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/put-selector/package.js info(107) Package Version: package: xstyle; version: 0.1.2 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/xstyle/package.js warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio/package.json warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video/package.json processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/promiseland/package.js discovering resources... starting reading resources... starting processing raw resource content... starting tokenizing resource... starting processing resource tokens... starting parsing resource... warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video { [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' } Error: spawn ENOENT at errnoException (child_process.js:980:11)

at Process.ChildProcess._handle.onexit (child_process.js:771:34)

client build

processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/build/client.profile.js info(107) Package Version: package: dojo; version: 1.10.0-pre processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dojo/dojo.profile.js info(107) Package Version: package: dijit; version: 1.10.0-pre processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dijit/dijit.profile.js info(107) Package Version: package: dojox; version: 1.9.0dev processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dojox/dojox.profile.js info(107) Package Version: package: dgrid; version: 0.3.7 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/dgrid/package.js info(107) Package Version: package: put-selector; version: 0.3.4 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/put-selector/package.js info(107) Package Version: package: xstyle; version: 0.1.2 processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/xstyle/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/main/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/client/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/sol/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/jshint/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/peg/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/codemirror/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/modules/package.js warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/style/package.json processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/term/package.js warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/debug/package.json warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/image/package.json warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio/package.json warn(209) Missing or empty package.json. filename: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video/package.json processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/promiseland/package.js processing profile resource /home/tomr/Projects/RemoteX11Web/nodeMirror/src/avc/package.js discovering resources... starting reading resources... starting processing raw resource content... starting tokenizing resource... starting processing resource tokens... starting parsing resource... warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/audio warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video warn(225) A directory that was scheduled to be read during discovery did not exist. directory: /home/tomr/Projects/RemoteX11Web/nodeMirror/src/video { [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' } Error: spawn ENOENT at errnoException (child_process.js:980:11)

at Process.ChildProcess._handle.onexit (child_process.js:771:34)

copy

cp: cannot stat ‘../release/client/dojo/dojo.js’: No such file or directory cp: cannot stat ‘../release/client/dojo/dojo.js.map’: No such file or directory cp: cannot stat ‘../release/client/dojo/dojo.js.uncompressed.js’: No such file or directory cp: cannot stat ‘../release/client/dojo/nls’: No such file or directory cp: cannot stat ‘../release/client/dojo/resources’: No such file or directory cp: cannot stat ‘../release/client/dojo/selector’: No such file or directory cp: cannot stat ‘../release/client/dgrid/css’: No such file or directory cp: cannot stat ‘../release/client/dijit/nls’: No such file or directory cp: cannot stat ‘../release/client/dijit/icons’: No such file or directory cp: cannot stat ‘../release/client/dijit/themes’: No such file or directory cp: cannot stat ‘../release/client/dojox/editor/plugins/resources’: No such file or directory cp: cannot stat ‘../release/client/jshint/jshint.js’: No such file or directory cp: cannot stat ‘../release/server/server/server.js’: No such file or directory cp: cannot stat ‘../release/client/style/style.css’: No such file or directory cp: omitting directory ‘../src/image/cursor’ cp: omitting directory ‘../src/image/logo’ cp: omitting directory ‘../src/image/screenshots’ cp: cannot stat ‘../release/client/avc/Avc.js’: No such file or directory cp: cannot stat ‘../release/client/avc/avc-codec.js’: No such file or directory cp: cannot stat ‘../release/client/avc/canvas.js’: No such file or directory cp: cannot stat ‘../release/client/avc/glUtils.js’: No such file or directory cp: cannot stat ‘../release/client/avc/util.js’: No such file or directory cp: cannot stat ‘../release/client/avc/sylvester.js’: No such file or directory cp: cannot stat ‘../release/client/avc/Wgt.js’: No such file or directory

soliton4 commented 10 years ago

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

cyberork commented 10 years ago

You were right, I missed java. I got it build now but can't see the x11-console when using my freshly build nodeMirror. I will dig into it a bit to give you more info soon.

Talk next week sounds great, early next week would work better than later. Let me know what time would work best for you. Have fun in Amsterdam.

Thomas

On Mon, Mar 3, 2014 at 1:21 AM, soliton4 notifications@github.com wrote:

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36489291 .

soliton4 commented 10 years ago

man ;p read the docu! or watch the video in both its explained that you have to pass a commandline parameter to use the x11 its no use as default on

i want you actually to read doku/watch video so im not gonna tell you the param ;p

On Wed, Mar 5, 2014 at 3:19 PM, Thomas Ruge notifications@github.comwrote:

You were right, I missed java. I got it build now but can't see the x11-console when using my freshly build nodeMirror. I will dig into it a bit to give you more info soon.

Talk next week sounds great, early next week would work better than later. Let me know what time would work best for you. Have fun in Amsterdam.

Thomas

On Mon, Mar 3, 2014 at 1:21 AM, soliton4 notifications@github.com wrote:

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36489291>

.

— Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36746034 .

cyberork commented 10 years ago

haha...

admittedly the missing java was a bad move, but I do use --x11terminal as the command line parameter and I do get the X11 terminal section. Just tried it again and now it worked. I did notice that sometimes I do get a white canvas when clicking 'X11' and I don 't think it's a user error...

... and I watched your youtube movie 2 times already;-)

talk to you next week

Thomas

On Wed, Mar 5, 2014 at 8:01 AM, soliton4 notifications@github.com wrote:

man ;p read the docu! or watch the video in both its explained that you have to pass a commandline parameter to use the x11 its no use as default on

i want you actually to read doku/watch video so im not gonna tell you the param ;p

On Wed, Mar 5, 2014 at 3:19 PM, Thomas Ruge notifications@github.comwrote:

You were right, I missed java. I got it build now but can't see the x11-console when using my freshly build nodeMirror. I will dig into it a bit to give you more info soon.

Talk next week sounds great, early next week would work better than later. Let me know what time would work best for you. Have fun in Amsterdam.

Thomas

On Mon, Mar 3, 2014 at 1:21 AM, soliton4 notifications@github.com wrote:

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36489291>

.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36746034> .

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36750388 .

soliton4 commented 10 years ago

the build version has less error reporting run the git version and check the console. what browser do you use? canvas means you use h264?

On Wed, Mar 5, 2014 at 4:29 PM, Thomas Ruge notifications@github.comwrote:

haha...

admittedly the missing java was a bad move, but I do use --x11terminal as the command line parameter and I do get the X11 terminal section. Just tried it again and now it worked. I did notice that sometimes I do get a white canvas when clicking 'X11' and I don 't think it's a user error...

... and I watched your youtube movie 2 times already;-)

talk to you next week

Thomas

On Wed, Mar 5, 2014 at 8:01 AM, soliton4 notifications@github.com wrote:

man ;p read the docu! or watch the video in both its explained that you have to pass a commandline parameter to use the x11 its no use as default on

i want you actually to read doku/watch video so im not gonna tell you the param ;p

On Wed, Mar 5, 2014 at 3:19 PM, Thomas Ruge <notifications@github.com wrote:

You were right, I missed java. I got it build now but can't see the x11-console when using my freshly build nodeMirror. I will dig into it a bit to give you more info soon.

Talk next week sounds great, early next week would work better than later. Let me know what time would work best for you. Have fun in Amsterdam.

Thomas

On Mon, Mar 3, 2014 at 1:21 AM, soliton4 notifications@github.com wrote:

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36489291

.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36746034> .

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36750388>

.

— Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36753677 .

cyberork commented 10 years ago

Quick update.

I modified x11Fun.js to reduce the resolution (my desk is 2560x1600, a bit too high for avconv) to 1280x720 and it worked pretty well on localhost at 30 fps. Then I logged in from my Macbook Air using firefox over the local network and got good interaction at settings with 12 up to 15 fps on my first test, anything higher and the performance would drop a lot and latency would go up to 30 sec. Unfortunately on subsequent tests I didn't get the same performance anymore, even though nothing changed.

Next step was connecting from my office with my Macbook Air to my linux machine at home over public internet. It did work at 5 fps but latency was up to 1 min.

I notice big variations in performance from test to test with no changes to the set up, any idea what could cause that ?

In summary I think it's a really impressive proof of concept. In order to get it usable over longer network distances, I think the first step is to replace the unix pipes as transportation layer and use a proper network layer with TCP at first and later using UDP with QoS, w hat do you think?

Let's definitely talk next week, would Monday or Tuesday work for you?

Best,

Thomas

On Wed, Mar 5, 2014 at 9:01 AM, soliton4 notifications@github.com wrote:

the build version has less error reporting run the git version and check the console. what browser do you use? canvas means you use h264?

On Wed, Mar 5, 2014 at 4:29 PM, Thomas Ruge notifications@github.comwrote:

haha...

admittedly the missing java was a bad move, but I do use --x11terminal as the command line parameter and I do get the X11 terminal section. Just tried it again and now it worked. I did notice that sometimes I do get a white canvas when clicking 'X11' and I don 't think it's a user error...

... and I watched your youtube movie 2 times already;-)

talk to you next week

Thomas

On Wed, Mar 5, 2014 at 8:01 AM, soliton4 notifications@github.com wrote:

man ;p read the docu! or watch the video in both its explained that you have to pass a commandline parameter to use the x11 its no use as default on

i want you actually to read doku/watch video so im not gonna tell you the param ;p

On Wed, Mar 5, 2014 at 3:19 PM, Thomas Ruge <notifications@github.com wrote:

You were right, I missed java. I got it build now but can't see the x11-console when using my freshly build nodeMirror. I will dig into it a bit to give you more info soon.

Talk next week sounds great, early next week would work better than later. Let me know what time would work best for you. Have fun in Amsterdam.

Thomas

On Mon, Mar 3, 2014 at 1:21 AM, soliton4 notifications@github.com wrote:

that audio and video errors are to be ignored. i screwed up there but that doesnt stop the build. your release directory is being created

the problem seems to be spawing processes are you sure you have java installed?

greetinx from my amsterdam trip. lets talk when i get back next week

Reply to this email directly or view it on GitHub<

https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36489291

.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36746034>

.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36750388>

.

Reply to this email directly or view it on GitHub< https://github.com/soliton4/nodeMirror/issues/15#issuecomment-36753677> .

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36757676 .

soliton4 commented 10 years ago

the pipes are not the problem. h264 has horrible bandwith use right now. we get at least the amount out of it, that is lost in base64 encoding. so bandwith is a problem for h264 and will result in long latency. for internet use i recommend webm. it takes more encoding power on the server but you can boost up the thread usage. i got 5 sec latency over mobile net accessing my atom 1,8 ghz super slow server so that proves that you can use it over internet. h264 is good for lan only and only if you have >10 mbit connection. its insane usage on bandwith maybe we get some better results with changing the ffmpeg parameters but im a video noob. well not anymore but i was recently ... so if you wanna play with it, play with params. i will try to find a way arround base64. and we may get one frame better latency by getting the frame detection code to the client.

you see there is lots of potential.

there is also a problem with rendering h264 on clients. it uses only one thread and there is no easy way arround that. so even if you have the newest i7 like i do at the mom. you will not get the hole cpu to help decoding it.

these are the limitations at the mom.

read this 3 or 4 times because i am one stoned pony at the mom.

greetinx from amsterdam

cyberork commented 10 years ago

Hey Soliton,

glad you're having fun in Amsterdam but you should come over here to Stonerville Denver. Here in CO it is legal too and there are sooo many shops you won't believe!

I looked into the bandwidth consumption and wow! You're right consumption is really high. I measured 30 MBit/s when streaming 1280x720 at 12 fps. My former team at NVIDIA developed a remoting solution using NVIDIA's GRID SDK and we finetuned x264's encode parameter to the point where we could stream 1920x1080@30 fps at as low as 2 Mbit/s, so I was able to actually run a streaming session tethering my iphone 4 (3G) w/o problems.

So, I am going to look into x264s encode parameter to see whether we can bring down the required bandwidth. I know that broadway.js is limited in its h.264 support but I am not sure in what ways it is limited. Do you know how well broadway.js is supporting h264?

Where within nodemirror can I tweak the avconv/x264 parameters ? I changed some in server.js but nodeMirror didn't pick up my changes. Can you point me to the file and line number where I can change the encode parameters (I saw there were multiple avconv parameter setting across the code ...).

Thanks + enjoy your time in Amsterdam's coffee shops ;-),

Thomas

On Thu, Mar 6, 2014 at 4:52 PM, soliton4 notifications@github.com wrote:

the pipes are not the problem. h264 has horrible bandwith use right now. we get at least the amount out of it, that is lost in base64 encoding. so bandwith is a problem for h264 and will result in long latency. for internet use i recommend webm. it takes more encoding power on the server but you can boost up the thread usage. i got 5 sec latency over mobile net accessing my atom 1,8 ghz super slow server so that proves that you can use it over internet. h264 is good for lan only and only if you have >10 mbit connection. its insane usage on bandwith maybe we get some better results with changing the ffmpeg parameters but im a video noob. well not anymore but i was recently ... so if you wanna play with it, play with params. i will try to find a way arround base64. and we may get one frame better latency by getting the frame detection code to the client.

you see there is lots of potential.

there is also a problem with rendering h264 on clients. it uses only one thread and there is no easy way arround that. so even if you have the newest i7 like i do at the mom. you will not get the hole cpu to help decoding it.

these are the limitations at the mom.

read this 3 or 4 times because i am one stoned pony at the mom.

greetinx from amsterdam

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-36952839 .

soliton4 commented 10 years ago

https://github.com/soliton4/nodeMirror/blob/master/src/server/server.js at line 232 are the params for ogg and webm since they are simple http requests.

https://github.com/soliton4/nodeMirror/blob/master/src/modules/Terminal.js at line 335 are the x264 params you can see i played arround with it a lot

this is where i got the params for h264 http://x264dev.multimedia.cx/archives/249

i am happy for suggestions. i was a total video noob not long ago so dont expect to much knowhow on my part

cyberork commented 10 years ago

Hi,

kurzer update, ich habe einigen Fortschritt gemacht was die x264 parameter angeht. Ich habe einiges recherchiert und kann jetzt die x11-console mit 1280x720p mit 30 fps betreiben mit maximal 8 Mbit/s, in der Regel eher um die 2-3 Mbit/s.

Ich hab' inzwischen auch einen Test gemacht und habe nodemirror bei mir zuhase laufen und kann mich von der Arbeit ueber das internet einloggen. Laeuft auch einigermassen mit 30 fps und relativ kurzer Latenzzeit. Allerdings ist das ganze etwas jittery und wenn ich ein movie laufen lasse, kann es auch mal zu sehr langen Latenzeiten fuehren und irgendwann haengt das ganze.

Hast Du mal Zeit fuer ein kurzes Gespraech ueber skype in den naechsten Tagen? Ich haette ein paar Fragen an Dich und wuerde gerne wissen ob Du fuer einen kurzen Auftrag zu haben waerest?

Hoffe der Aufenthalt in Amsterdam war spassig,

Thomas

On Sat, Mar 8, 2014 at 9:20 AM, soliton4 notifications@github.com wrote:

https://github.com/soliton4/nodeMirror/blob/master/src/server/server.js at line 232 are the params for ogg and webm since they are simple http requests.

https://github.com/soliton4/nodeMirror/blob/master/src/modules/Terminal.js at line 335 are the x264 params you can see i played arround with it a lot

this is where i got the params for h264 http://x264dev.multimedia.cx/archives/249

i am happy for suggestions. i was a total video noob not long ago so dont expect to much knowhow on my part

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-37101866 .

soliton4 commented 10 years ago

hi pls stick to english in git for documentation

we can make a hangout ofc. you need to send me your email address and a prefered time

i tried to get the rendering multithreaded by using iframes to do the work. but the result is rather disappointing. i am at 30fps for 720p in firefox and 20fps in chrome

latency went down another frame because of changes.

check it out.

there is a new object in the terminal folder called avcRunner which does the spawn.

how did you get the bitrate down? changing the parameters? tell me how!

cu

cyberork commented 10 years ago

Sorry about the German,

will stick with English going forward.

I got the bitrate down by experimenting with different parameters and by doing more H264 research. I'll send you the parameters I used by EOD. The parameters that are currently in nodeMirror are peaking when nothing changes, didn't look into exactly and just started from a basic parameter set and worked my way up.

Let's sync up over email about our quick chat: cyberork@gmail.com

Thomas

On Tue, Mar 11, 2014 at 12:26 PM, soliton4 notifications@github.com wrote:

hi pls stick to english in git for documentation

we can make a hangout ofc. you need to send me your email address and a prefered time

i tried to get the rendering multithreaded by using iframes to do the work. but the result is rather disappointing. i am at 30fps for 720p in firefox and 20fps in chrome

latency went down another frame because of changes.

check it out.

there is a new object in the terminal folder called avcRunner which does the spawn.

how did you get the bitrate down? changing the parameters? tell me how!

cu

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-37331579 .

soliton4 commented 10 years ago

have sent you 2 mails. no response so far ...

cyberork commented 10 years ago

Sorry 'bout that, I am pretty busy atm. I am going to send out the parameters tonight.

On Wed, Mar 12, 2014 at 12:17 PM, soliton4 notifications@github.com wrote:

have sent you 2 mails. no response so far ...

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-37444144 .

cyberork commented 10 years ago

Here it is:

        var params = [
          "-f", "x11grab",
          "-r", "30",
          "-s", "1280x720",
          "-i", ":0.0+0,0",
          "-vcodec", "libx264",
          "-pre", "ultrafast",
          "-tune", "zerolatency",
          "-threads", "4",
          "-f", "h264"
        ];

I have tested about a dozen different variations and this one is so far the best but I am pretty sure I can find even better ones yet.

One issue with the current setup is that when the encoder is producing more data than the network connection can handle , alot of data gets buffered and latency can get pretty long, a feedback mechanism between client and server that would throttle the stream would help but to my knowledge avconv can't change encode rate programmatically, so it would need an alternative to avconv actually...

On Wed, Mar 12, 2014 at 3:58 PM, Thomas Ruge cyberork@gmail.com wrote:

Sorry 'bout that, I am pretty busy atm. I am going to send out the parameters tonight.

On Wed, Mar 12, 2014 at 12:17 PM, soliton4 notifications@github.comwrote:

have sent you 2 mails. no response so far ...

Reply to this email directly or view it on GitHubhttps://github.com/soliton4/nodeMirror/issues/15#issuecomment-37444144 .

soliton4 commented 10 years ago

should no longer be an issue with configurable bandwidth.