Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/davibe/webproducer
A flash player based RTMP encoder featuring with adobe FMLE style authentication and Javascript interface
https://github.com/davibe/webproducer
Last synced: 3 months ago
JSON representation
A flash player based RTMP encoder featuring with adobe FMLE style authentication and Javascript interface
- Host: GitHub
- URL: https://github.com/davibe/webproducer
- Owner: davibe
- Created: 2013-06-05T09:57:31.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2016-11-24T14:32:27.000Z (about 8 years ago)
- Last Synced: 2023-10-20T19:14:20.659Z (about 1 year ago)
- Language: JavaScript
- Size: 1.35 MB
- Stars: 17
- Watchers: 5
- Forks: 10
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Description
===========A flash based RTMP encoder featuring
- "adobe" authentication (the same performed by FMLE)
- automatic video resize
- javascript interface
- log to javascript console
- works in every browser with flash plugin installedThe root directory is a flash builder project.
"bin-debug/" folder contains a sample app.Here is how it works
--------------------var producer = new WebProducer({
id: 'producer', // the html object id
width: 320 * 1.5, // these are sizes of the player on the page
height: 240 * 1.5, // not related to the stream resolution
trace: false // would enable debug logs in js console
});
producer.once('ready', function () {
console.log('The producer is now ready');
console.log("These are methods supported by producer flash object", producer.methods);
// check there is a camera available
var numCameras = producer.countCameras();
console.log("We have " + numCameras + " camera(s) available");
if (numCameras == 0) return alert('there is no camera availalbe');
// checking user permissions on camera
producer.once('camera-unmuted', function () {
console.log("Camera is now available");
tryToConnect();
});
producer.on('camera-muted', function () {
console.log("The user has denied access to the camera");
});
var cameraMuted = producer.isCameraMuted();
if (cameraMuted) {
console.log("The user must approve camera access");
} else {
console.log("The camera is available, user already approved");
producer.fire('camera-unmuted'); // we manually trigger the event
}
var tryToConnect = function () {
//producer.setCredentials("username", "password"); // if you want to emulate fmle auth
var streamName = "foo"; // stream name will reflect in the recorded filename
var url = 'rtmp://' +
window.location.hostname +
':1935/live'; // "live/" is the RTMP application name, always the same.
producer.setUrl(url);
producer.setStreamName(streamName);
producer.setStreamWidth(640);
producer.setStreamHeight(480);
producer.on('connect', function () {
console.log("We are now streaming live on our channel");
});
producer.on('disconnect', function () {
console.log("The producer has been disconnected");
});
producer.on('error', function (reason) {
console.log("ERROR: ", reason);
});
producer.connect();
setTimeout(function () { producer.disconnect(); }, 10000);
}
});Open bin-debug/index.html to see it in action. Remeber it has to be running
on a webserver you can't open it from file:// otherwise the NetConnection would
not work (this is due to some Flash restrictions).