编程语言
首页 > 编程语言> > Javascript:浏览器中的Airplay

Javascript:浏览器中的Airplay

作者:互联网

有没有办法在浏览器中使用JavaScript将图像,视频和音频发送到AirPlay服务器?

解决方法:

在JavaScript中无法实现这一点.但是,您可以使用NPAPI插件从浏览器运行它(非常痛苦).

如果您可以运行本地服务器,则有几个node.js模块可以使这更容易.以下示例将流式传输发布到附近AirPlay设备的任何音频文件.

>它需要NPM的airtunes模块,我维护.
>它使用FFmpeg对文件进行转码.

你可以测试它:

curl -X POST --data-binary @sample.mp3 http://localhost:8080/audio

它假设FFmpeg位于/usr/local/bin / ffmpeg中,并且AirPlay设备在localhost:5000上可用(您可以尝试使用Airfoil扬声器).

var airtunes = require('airtunes'),
    express = require('express'),
    app = express(),
    device = airtunes.add('localhost'),
    spawn = require('child_process').spawn;

app.post('/audio', function(req, res) {
  // use ffmpeg to reencode data on the fly
  var ffmpeg = spawn('/usr/local/bin/ffmpeg', [
    '-i', 'pipe:0',       // Read from stdin
    '-f', 's16le',        // PCM 16bits, little-endian
    '-ar', '44100',       // Sampling rate
    '-ac', 2,             // Stereo
    'pipe:1'              // Output to stdout
  ]);

  // pipe data to AirTunes
  ffmpeg.stdout.pipe(airtunes, { end: false });

  // detect if ffmpeg was not spawned correctly
  ffmpeg.stderr.setEncoding('utf8');
  ffmpeg.stderr.on('data', function(data) {
    if(/^execvp\(\)/.test(data)) {
      console.log('failed to start ' + argv.ffmpeg);
      process.exit(1);
    }
  });

  req.pipe(ffmpeg.stdin);

  req.on('end', function() {
    res.end();
 });
});

device.on('status', function(status) {
  console.log('status: ' + status);
});

console.log('listening on port 8080');
app.listen(8080);

标签:javascript,airplay
来源: https://codeday.me/bug/20190626/1293453.html