stream management query examples

Manage Stream Files

You can use the Wowza Streaming Engine™ media server software REST API to identify, add, and manage stream files in a Wowza Streaming Engine instance.

A stream file is an alias for a complex, URI-based stream name from a source such as an MPEG-TS encoder or IP camera. For example, a stream from an MPEG-TS encoder might have a name like udp://0.0.0.0:10000. You can replace that with a stream file such as mycoolevent.stream. Players can then use mycoolevent.stream in playback URLs in place of the URI-based stream name. Stream files are stored in the /Library/WowzaStreamingEngine/content directory and have a .stream file extension.

Notes:

Get a List of Stream Files

View a list of stream files associated with an application:

Example request

curl -X GET \
  -H "Accept:application/json; charset=utf-8" \
  -H "Content-Type:application/json; charset=utf-8" \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles

View a list of stream files associated with an application named testlive:

Example request

curl -X GET \
  -H "Accept:application/json; charset=utf-8" \
  -H "Content-Type:application/json; charset=utf-8" \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/testlive/streamfiles

The command should return a response similar to the following:

Example response

{
  "serverName": "serverName",
  "streamFiles": [
    {
      "id": "metallica",
      "href": "http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/testlive/streamfiles/streamfile1"
    },
    {
      "id": "saosin",
      "href": "http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/testlive/streamfiles/streamfile2"
    }
  ]
}

View the details of a stream file:

Example request

curl -X GET \
  -H 'Accept:application/json; charset=utf-8' \
  -H 'Content-type:application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/{streamfileName}

The command should return a response that shows the stream file's name and the source URI, like this:

Example response

{
  "version": "1430317484000",
  "serverName": "serverName",
  "uri": "udp://0.0.0.0:10000",
  "name": "streamfileName"
}

Add a Stream File

Add a stream file named creedence:

Example request

curl -X POST \
  -H 'Accept:application/json; charset=utf-8' \
  -H 'Content-Type:application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles \
  -d '{
    "name": "creedence",
    "serverName": "serverName",
    "uri": "udp://1.2.3.4:10000"
  }'

Depending on the stream type, change the protocol for the value in the uri string. The command returns a response similar to this:

Example response

{
  "success": true,
  "message": "",
  "data": null
}

Update a Stream File

When using the REST API, you can customize the advanced properties of a stream file. The following example changes the URI to an Axis IP camera and reduces the stream timeout and reconnect wait time for the stream file named creedence:

Example request

curl -X PUT \
  -H 'Accept: application/json; charset=utf-8' \
  -H 'Content-Type: application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/creedence/adv \
  -d '{
    "sourceControlDriver": "",
    "advancedSettings": [{
      "sectionName": "Common",
      "canRemove": false,
      "defaultValue": "null",
      "documented": false,
      "name": "uri",
      "section": "null",
      "type": "string",
      "value": "rtsp://user:pass@[ip-camera]:554/axis-media/media.amp?videocodec=h264&streamprofile=400",
      "enabled": true
    }, {
      "sectionName": "Common",
      "canRemove": true,
      "defaultValue": "12000",
      "documented": true,
      "name": "streamTimeout",
      "section": "null",
      "type": "integer",
      "value": "0",
      "enabled": true
    }, {
      "sectionName": "Common",
      "canRemove": false,
      "defaultValue": "3000",
      "documented": true,
      "name": "reconnectWaitTime",
      "section": "null",
      "type": "integer",
      "value": "0",
      "enabled": true
    }],
    "serverName": "serverName",
    "version": ""
  }'

The command should return a response that looks something like this:

Example response

{
  "success": true,
  "message": "",
  "data": null
}

You can also create stream files using MPEG-TS audio and video packet identifiers (PIDs), as in the following example. For the value properties in the MpegtsAudioPID and MpegtsVideoPID blocks, use the values from your encoder.

Example request

curl -X PUT \
  -H 'Accept: application/json; charset=utf-8' \
  -H 'Content-Type: application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/creedence/adv \
  -d '{
    "sourceControlDriver": "",
    "advancedSettings": [{
      "sectionName": "Common",
      "canRemove": false,
      "defaultValue": "null",
      "documented": false,
      "name": "uri",
      "section": "null",
      "type": "string",
      "value": "udp://1.2.3.4:10000",
      "enabled": true
    }, {
      "sectionName": "Common",
      "canRemove": true,
      "defaultValue": "",
      "documented": true,
      "name": "MpegtsAudioPID",
      "section": "null",
      "type": "integer",
      "value": "15",
      "enabled": true
    }, {
      "sectionName": "Common",
      "canRemove": false,
      "defaultValue": "",
      "documented": true,
      "name": "MpegtsVideoPID",
      "section": "null",
      "type": "integer",
      "value": "16",
      "enabled": true
    }],
    "serverName": "serverName",
    "version": ""
  }'

Connect a Stream File

Initiate the connection of a stream file named creedence:

Example request

curl -X PUT \
  -H 'Accept:application/json; charset=utf-8' \
  -H 'Content-type:application/json; charset=utf-8' \
  "http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/creedence/actions/connect?connectAppName={appName}&appInstance={instanceName}&mediaCasterType=rtp"

Disconnect a Stream File

Disconnect a stream file:

Example request

curl -X PUT \
  -H 'Accept:application/json; charset=utf-8' \
  -H 'Content-Type:application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/instances/{instanceName}/incomingstreams/{streamfileName}/actions/disconnectStream

Note: Stream files must be disconnected before they can be deleted.

Remove a Stream File

Delete a stream file:

Example request

curl -X DELETE \
  -H 'Accept:application/json; charset=utf-8' \
  http://localhost:8087/v2/servers/{serverName}/vhosts/{vhostName}/applications/{appName}/streamfiles/{streamfileName}