snapcast/doc/control_spec.md
2016-04-07 21:08:48 +02:00

5 KiB

Snapcast control protocol

#Stream ###Stream status

{
  "id": "pipe:///tmp/snapfifo",
  "status": "playing",
  "uri": {
    "fragment": "",
    "host": "",
    "path": "/tmp/snapfifo",
    "query": {
      "buffer_ms": "20",
      "codec": "flac",
      "name": "Radio",
      "sampleformat": "48000:16:2"
    },
    "raw": "pipe:///tmp/snapfifo?name=Radio&sampleformat=48000:16:2&codec=flac",
    "scheme": "pipe"
  }
}

###Stream update push notification

{
  "jsonrpc": "2.0",
  "method": "Stream.OnUpdate",
  "params": {
    "data": {
      "id": "pipe:///tmp/snapfifo",
      "status": "playing",
      "uri": {
        "fragment": "",
        "host": "",
        "path": "/tmp/snapfifo",
        "query": {
          "buffer_ms": "20",
          "codec": "flac",
          "name": "Radio",
          "sampleformat": "48000:16:2"
        },
        "raw": "pipe:///tmp/snapfifo?name=Radio&sampleformat=48000:16:2&codec=flac",
        "scheme": "pipe"
      }
    }
  }
}

#Client ##Client status

{
  "config": {
    "latency": 0,
    "name": "",
    "stream": "pipe:///tmp/snapfifo",
    "volume": {
      "muted": false,
      "percent": 75
    }
  },
  "connected": true,
  "host": {
    "arch": "unknown",
    "ip": "192.168.0.24",
    "mac": "80:1f:02:ed:fd:e0",
    "name": "wohnzimmer",
    "os": "Raspbian GNU/Linux 8.0 (jessie)"
  },
  "lastSeen": {
    "sec": 1457597583,
    "usec": 956325
  },
  "snapclient": {
    "name": "Snapclient",
    "protocolVersion": 1,
    "version": "0.5.0-beta-2"
  }
}

#Server ##Server status

{
  "id": 0,
  "jsonrpc": "2.0",
  "result": {
    "clients": [
      {
        "config": {
          "latency": 0,
          "name": "",
          "stream": "pipe:///tmp/snapfifo",
          "volume": {
            "muted": false,
            "percent": 75
          }
        },
        "connected": true,
        "host": {
          "arch": "unknown",
          "ip": "192.168.0.24",
          "mac": "80:1f:02:ed:fd:e0",
          "name": "wohnzimmer",
          "os": "Raspbian GNU/Linux 8.0 (jessie)"
        },
        "lastSeen": {
          "sec": 1457597583,
          "usec": 956325
        },
        "snapclient": {
          "name": "Snapclient",
          "protocolVersion": 1,
          "version": "0.5.0-beta-2"
        }
      },
      {
        "config": {
          "latency": 0,
          "name": "Galaxy S5",
          "stream": "pipe:///tmp/snapfifo",
          "volume": {
            "muted": false,
            "percent": 35
          }
        },
        "connected": false,
        "host": {
          "arch": "armeabi-v7a",
          "ip": "192.168.0.23",
          "mac": "a0:b4:a5:3a:f1:db",
          "name": "android-6bd0a5e5c0068caf",
          "os": "Android 5.0.2"
        },
        "lastSeen": {
          "sec": 1457594760,
          "usec": 278026
        },
        "snapclient": {
          "name": "Snapclient",
          "protocolVersion": 1,
          "version": "0.5.0-beta-2"
        }
      },
      {
        "config": {
          "latency": 0,
          "name": "",
          "stream": "pipe:///tmp/snapfifo",
          "volume": {
            "muted": false,
            "percent": 76
          }
        },
        "connected": false,
        "host": {
          "arch": "x86_64",
          "ip": "192.168.0.54",
          "mac": "00:21:6a:7d:74:fc",
          "name": "T400",
          "os": "Linux Mint 17.3 Rosa"
        },
        "lastSeen": {
          "sec": 1457594824,
          "usec": 708630
        },
        "snapclient": {
          "name": "Snapclient",
          "protocolVersion": 1,
          "version": "0.5.0-beta-2"
        }
      }
    ],
    "server": {
      "host": {
        "arch": "x86_64",
        "ip": "",
        "mac": "",
        "name": "elaine",
        "os": "Linux Mint 17.3 Rosa"
      },
      "snapserver": {
        "controlProtocolVersion": 1,
        "name": "Snapserver",
        "protocolVersion": 1,
        "version": "0.5.0-beta-2"
      }
    },
    "streams": [
      {
        "id": "pipe:///tmp/snapfifo",
        "status": "idle",
        "uri": {
          "fragment": "",
          "host": "",
          "path": "/tmp/snapfifo",
          "query": {
            "buffer_ms": "20",
            "codec": "flac",
            "name": "Radio",
            "sampleformat": "48000:16:2"
          },
          "raw": "pipe:///tmp/snapfifo?name=Radio&sampleformat=48000:16:2&codec=flac",
          "scheme": "pipe"
        }
      },
      {
        "id": "file:///home/johannes/Intern/Music/Wave file.wav",
        "status": "playing",
        "uri": {
          "fragment": "",
          "host": "",
          "path": "/home/johannes/Intern/Music/Wave file.wav",
          "query": {
            "buffer_ms": "20",
            "codec": "ogg:VBR:0.1",
            "name": "AL",
            "sampleformat": "48000:16:2"
          },
          "raw": "file:///home/johannes/Intern/Music/Wave%20file.wav?name=AL&sampleformat=48000:16:2&codec=ogg:VBR:0.1",
          "scheme": "file"
        }
      }
    ]
  }
}