Skip to content

Instantly share code, notes, and snippets.

@kjunichi
Last active February 28, 2018 08:35
Show Gist options
  • Save kjunichi/c94265953efe27231447 to your computer and use it in GitHub Desktop.
Save kjunichi/c94265953efe27231447 to your computer and use it in GitHub Desktop.
2014/5/27

Idea

Atom Shell側でWebRTCを受けたい

<- 難しそうな気もするから、実装済みのファイルアップロードが良いかも。。

  • Chromeで動的にウィンドウのサイズを変更したい
  • 起動時にウィンドウサイズを指定したい

process.env.comspec

WindowsでChromeを起動する

var spawn = require('child_process').spawn;

spawn(process.env.LOCALAPPDATA+"\\Google\\Chrome\\Application\\chrome.exe",
[
"--app=https://localhost:4430/webrtc.html",
"--enable-usermedia-screen-capture",
"--ignore-certificate-errors",
"--app-window-size='320,240'"
]);

関連

アクセス解析タグ

/**
* Module dependencies.
*/
var logger = require('koa-logger');
var serve = require('koa-static');
var parse = require('co-busboy');
var koa = require('koa');
var fs = require('fs');
var app = koa();
// log requests
app.use(logger());
// custom 404
app.use(function *(next){
yield next;
if (this.body || !this.idempotent) return;
this.redirect('/404.html');
});
// serve files from ./public
app.use(serve(__dirname + '/public'));
// handle uploads
app.use(function *(next){
// ignore non-POSTs
if ('POST' != this.method) return yield next;
// multipart upload
var parts = parse(this);
var part;
while (part = yield parts) {
var stream = fs.createWriteStream(__dirname + '/uploads/' + Math.random()+"_"+part.filename);
part.pipe(stream);
console.log('uploading %s -> %s', part.filename, stream.path);
}
this.redirect('/');
});
// listen
var https = require('https');
var options = {
key: fs.readFileSync(__dirname +"/key.pem"),
cert: fs.readFileSync(__dirname +"/cert.pem")
};
https.createServer(options, app.callback()).listen(4430);
app.listen(3000);
console.log('listening on port 3000');
<html>
<meta charset="UTF-8">
<video id='world' width="640" height="480" autoplay></video>
<button onClick="start()">start</button>
<button onClick="stop()">stop</button>
<script src="RecordRTC.js"></script>
<script>
var video = document.getElementById("world");
var localStream;
function start() {
if (navigator.webkitGetUserMedia) {
navigator.webkitGetUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'screen',
minWidth: 1280,
maxWidth: 2560,
minHeight: 720,
maxHeight: 1440
}
}
}, function (stream) {
localStream = stream;
window.recordRTC = RecordRTC(localStream,{type:"video",video: {
width: 640,
height: 480
},
canvas: {
width: 640,
height: 480
}
});
recordRTC.startRecording();
var url = window.webkitURL.createObjectURL(stream);
//video.src = url;
//video.play();
}, function (error) {});
} else if (navigator.mozGetUserMedia) {
navigator.mozGetUserMedia({
video: true
},
function (stream) {
video.mozSrcObject = stream;
video.play();
streaming = true;
},
function (err) {
alert("An error occured! " + err);
}
);
} else if (navigator.getUserMedia) {
navigator.getUserMedia("audio, video", success, error);
}
}
function stop() {
if (navigator.webkitGetUserMedia) {
localStream.stop();
//video.stop();
//video.src = null;
recordRTC.stopRecording(function (audioVideoWebMURL) {
window.open(audioVideoWebMURL);
});
}
if (video.mozSrcObject) {
//video.mozSrcObject.stop();
video.mozSrcObject = null;
}
}
</script>
</html>
@nixon1333
Copy link

Hi,
I'm trying to use this. But it's not working for me.
In my code I'm using only this part

// multipart upload
var parts = parse(this);
var part;

while (part = yield parts) {
var stream = fs.createWriteStream(__dirname + '/uploads/' + Math.random()+"_"+part.filename);
part.pipe(stream);
console.log('uploading %s -> %s', part.filename, stream.path);
}

And in the console it's showing perfect output.. But i'm not getting any image in uploads folder under the project.

Any you help?
Thanks in advance,
Nixon

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment