airtunes2
Version:
an AirTunes v2 implementation: stream wirelessly to audio devices.
54 lines (44 loc) • 1.43 kB
JavaScript
var airtunes = require('../lib/'),
argv = require('optimist')
.usage('Usage: $0 --host [host] --port [num] --volume [num] --password [string]')
.default('host', 'localhost')
.default('port', 5000)
.default('volume', 50)
.demand(['host'])
.argv;
console.log('pipe PCM data to play over AirTunes');
console.log('example: cat sample.pcm | node play_stdin.js --host <AirTunes host>\n');
// Only works on OSX
// airtunes.addCoreAudio();
console.log('adding device: ' + argv.host + ':' + argv.port);
var device = airtunes.add(argv.host, argv);
// when the device is online, spawn ffmpeg to transcode the file
device.on('status', function(status) {
process.stdin.on('data', function () {});
process.stdin.pipe(airtunes);
process.stdin.resume();
});
device.on('error', function(err) {
console.log('device error: ' + err);
process.exit(1);
});
setTimeout(function () {
console.log('stopping');
airtunes.stopAll(function () {
console.log('all stopped');
});
}, 1000);
// monitor buffer events
airtunes.on('buffer', function(status) {
console.log('buffer ' + status);
// after the playback ends, give AirTunes some time to finish
if(status === 'end') {
console.log('playback ended, waiting for AirTunes devices');
setTimeout(function() {
airtunes.stopAll(function() {
console.log('end');
process.exit();
});
}, 2000);
}
});