{"_id":"trampoline","_rev":"7-33a3247ce53683ac8d9c74a6a032d9db","name":"trampoline","description":"Apple AirPlay trampoline server","dist-tags":{"latest":"0.0.1"},"versions":{"0.0.1":{"name":"trampoline","description":"Apple AirPlay trampoline server","version":"0.0.1","author":{"name":"Ben Vanik","email":"ben.vanik@gmail.com"},"contributors":[],"repository":{"type":"git","url":"git://github.com/benvanik/trampoline.git"},"keywords":["apple","mac","media","airplay","video","server"],"directories":{},"main":"./lib/server","bin":{"trampoline":"./lib/server.js"},"dependencies":{"tav":"0.1.0","node-uuid":"1.2.0","dom-js":"0.0.6","airplay":">=0.0.1","transcoding":">=0.0.1"},"scripts":{"start":"node server.js"},"engines":{"node":">= 0.5.x"},"devDependencies":{},"config":{"port":"8090"},"_npmUser":{"name":"benvanik","email":"ben.vanik@gmail.com"},"_id":"trampoline@0.0.1","_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.6.1","_defaultsLoaded":true,"dist":{"shasum":"26a3d0ffd5e694523964498b630139a893c02edc","tarball":"https://registry.npmjs.org/trampoline/-/trampoline-0.0.1.tgz","integrity":"sha512-HUGfNkzxUeAGzsdHwkZS6zhodbsCMaowUllWYzulFCEZ0MkiFnqem8/Ta9pk+9BY4zwTUVBxwqDPcjffqmbsCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpv421jJe8WLfb+31k4m8Ae+zXvpawvwjcPyAimOcFaAIgBh4g4X3SVyFlN9jgiWD1wLGlx97fnjAnjOBOZoNyGDU="}]},"maintainers":[{"name":"benvanik","email":"ben.vanik@gmail.com"}]}},"readme":"Trampoline -- AirPlay control service\n====================================\n\nTrampoline provides a node server that gives a RESTful API to AirPlay devices\non the local network via\n[node-airplay](https://github.com/benvanik/node-airplay). The server can be used\nby applications on the local machine or network to discover AirPlay devices and\ncontrol the playback of those devices with one API.\n\nEventually, Trampoline will provide transparent video serving (exposing\nindividual local files over HTTP to enable playback from AirPlay devices) and\ntranscoding (sourcing from local or remote video files and transcoding into a\nformat that Apple devices will accept).\n\n## Quickstart\n\n    npm install trampoline\n    npm start trampoline\n\n## Installation\n\nWith [npm](http://npmjs.org):\n\n    npm install trampoline\n\nFrom source:\n\n    cd ~\n    git clone https://benvanik@github.com/benvanik/trampoline.git\n    npm link trampoline/\n\n## Configuration\n\nWhen using `npm start`, use `npm config` to change the launch options:\n\n    npm config set trampoline:port 8090\n    npm start trampoline\n\nIf launching directly via `trampoline`:\n\n    trampoline --port=8090\n\n## API\n\n### Content API\n\nNOTE: content status readyToPlay must be true before attempting playback!\n\nSetup a new content serving request:\n\n    POST /content/setup\n        {\n          source: {\n            content: string,\n            mimeType: string,     // 'video/webm'\n            cookie: string,\n            referer: string,\n            auth: string          // user:password\n          },\n          target: {\n            mimeType: string,     // 'video/mp4'\n            resolution: number,   // 480, 720, 1080, undefined for original\n            quality: number       // [0-1], undefined for don't care\n          }\n        }\n    --> {\n          id: string\n        }\n\n    GET /content/[id]\n    --> [streaming content]\n\n    PUT /content/[id]\n\n    DELETE /content/[id]\n\n    GET /content/[id]/status\n    --> {\n          cached: boolean,\n          seekable: boolean,\n          readyToPlay: boolean\n        }\n\n    POST /content/[id]/cache\n        {}\n    --> {}\n\n### Device API\n\nList all devices on the network (query occasionally):\n\n    GET /device/list\n    --> {\n          devices: [\n            {\n              id: string,\n              name: string,\n              deviceId: string,\n              features: number,\n              model: string,\n              slideshowFeatures: [],\n              supportedContentTypes: [string, ...]\n            }, ...\n          ]\n        }\n\nGet the information of a specific device:\n\n    GET /device/id/\n    --> {\n          id: string,\n          name: string,\n          deviceId: string,\n          features: number,\n          model: string,\n          slideshowFeatures: [],\n          supportedContentTypes: [string, ...]\n        }\n\nGet the playback status of a device:\n\n    GET /device/id/status\n    --> {\n          duration: number,\n          position: number,\n          rate: number,\n          playbackBufferEmpty: boolean,\n          playbackBufferFull: boolean,\n          playbackLikelyToKeepUp: boolean,\n          readyToPlay: boolean,\n          loadedTimeRanges: [\n            {\n              start: number,\n              duration: number\n            }, ...\n          ],\n          seekableTimeRanges: [\n            {\n              start: number,\n              duration: number\n            }, ...\n          ]\n        }\n\nBegin playback of the given content:\n\n    POST /device/id/play\n        {\n          content: string,\n          start: number\n        }\n    --> {}\n\nStop playback of the current content:\n\n    POST /device/id/stop\n        {}\n    --> {}\n\nSeek to the given position in the current content:\n\n    POST /device/id/scrub\n        {\n          position: number\n        }\n    --> {}\n\nChange the playback rate of the current content (0 = pause, 1 = resume):\n\n    POST /device/id/rate\n        {\n          value: number\n        }\n    --> {}\n\nAdjust the playback volume:\n\n    POST /device/id/volume\n        {\n          value: number\n        }\n    --> {}\n\nTODO: Post a photo for slideshow mode:\n\n    POST /device/id/photo\n        {\n          content: string,\n          transition: string\n        }\n    --> {}\n\n\n\n\n\nTranscoding:\ninstall mac ports\nsudo port install ffmpeg +nonfree\nsudo port install mplayer +nonfree\nHTTP Live Streaming Tools\n\nTODO: repackage on git so can be handled by npm somehow\nwget http://sourceforge.net/projects/mediainfo/files/binary/mediainfo/0.7.50/MediaInfo_CLI_0.7.50_GNU_FromSource.tar.bz2/download\ntar zxvf MediaInfo_CLI_0.7.50_GNU_FromSource.tar.bz2\ncd MediaInfo_CLI_0.7.50_GNU_FromSource/\n./CLI_Compile.sh\ncd MediaInfo/Project/GNU/CLI && make install\n\nMENCODER=$(which mencoder)\nMEDIAINFO=$(which mediainfo)\nFFMPEG=$(which ffmpeg)\nLSDVD=$(which lsdvd)\nXML=$(which xmlstarlet)\n\n/Applications/VLC.app/Contents/MacOS/VLC -vv SOURCEFILE --intf=rc '--sout=#transcode{vcodec=h264,vb=2048,acodec=mp4a,ab=192}:standard{mux=ts,dst=-,access=file}' | mediastreamsegmenter -f /some/tmp/path/ -D\n","maintainers":[{"name":"benvanik","email":"ben.vanik@gmail.com"}],"time":{"modified":"2022-06-27T19:59:44.462Z","created":"2011-11-23T07:57:37.459Z","0.0.1":"2011-11-23T07:57:38.920Z"},"author":{"name":"Ben Vanik","email":"ben.vanik@gmail.com"},"repository":{"type":"git","url":"git://github.com/benvanik/trampoline.git"},"users":{"rchk":true}}