API
This is documentation of the new API for Telestream Cloud Flip transcoding service. It introduces a number of changes and updates that may affect your integration.
We still maintain documentation for API V3 and documentation for API V2 and you will be able to keep using it.
Flip API is REST based with responses in JSON and allows you to control whole transcoding process, from setting up and managing Factories, adding and customizing profiles, submitting jobs and monitoring their progress and status.
Using the REST API directly
If you don’t plan to use one of our SDKs you then you will need the following data to make calls to our API:
- API Address: https://api.cloud.telestream.net/flip/3.1
encodings
encodings
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /encodings.json
Returns a list of Encoding objects
Parameters
factory_id string In query required Id of a Factory. |
video_id string In query optional Id of a Video. When specified, the resulting list will contain videos that belong to the Video. |
status string In query optional One of success , fail , processing . When specified, the resulting list will contain ecodings filtered by status. |
profile_id string In query optional Filter by profile_id. |
profile_name string In query optional Filter by profile_name. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
screenshots string In query optional Determines whether the response will include screenshots. By default this is not set. |
precise_status string In query optional Determines whether the response will include a precise status. By default this is not set. |
Example responses
200 Response
{
"encodings": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a list of Video’s encodings. | PaginatedEncodingsCollection |
create encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /encodings.json
Creates an Encoding
Body parameter
{
"video_id": "string",
"profile_id": "string",
"profile_name": "string"
}
Parameters
factory_id string In query required Id of a Factory. |
screenshots string In query optional Determines whether the response will include screenshots. By default this is not set. |
precise_status string In query optional Determines whether the response will include a precise status. By default this is not set. |
body object In body required none |
» video_id string In body required Id of a Video that will be encoded. |
» profile_id string In body optional Id of a Profile that will be used for encoding. |
» profile_name string In body optional A name of a Profile that will be used for encoding. |
Example responses
200 Response
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully created an Encoding. | Encoding |
400 | Bad RequestFailed to create an Encoding using the provided data or tried to add an Encoding for a failed Video or a Video older than 30 days | Error |
403 | ForbiddenNot authorized to create an Encoding | Error |
encodings count
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/count.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/count.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/count.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/count.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /encodings/count.json
Returns a number of Encoding objects created using a given factory.
Parameters
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a number of encodings. | CountResponse |
404 | Not FoundFactory not found. | Error |
encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /encodings/{id}.json
Returns an Encoding object.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
screenshots string In query optional Determines whether the response will include screenshots. By default this is not set. |
precise_status string In query optional Determines whether the response will include a precise status. By default this is not set. |
Example responses
200 Response
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Encoding | Encoding |
404 | Not FoundEncoding or Factory not found | Error |
update encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.put('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /encodings/{id}.json
Updates an Encoding
Body parameter
{
"profile_id": "string",
"profile_name": "string"
}
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
screenshots string In query optional Determines whether the response will include screenshots. By default this is not set. |
precise_status string In query optional Determines whether the response will include a precise status. By default this is not set. |
body object In body required none |
» profile_id string In body optional Id of a Profile that will be used for encoding. |
» profile_name string In body optional A name of a Profile that will be used for encoding. |
Example responses
200 Response
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKEncoding successfully updated. | Encoding |
400 | Bad RequestTried to update an Encoding older than 30 days. | Error |
403 | ForbiddenNot authorized to update the Encoding. | Error |
404 | Not FoundEncoding or Factory not found. | Error |
delete encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.delete('https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /encodings/{id}.json
Deletes an Encoding from both Telestream Cloud and your storage. Returns an information whether the operation was successful.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"deleted": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKEncoding has been successfully deleted. | DeletedResponse |
400 | Bad RequestTried to delete an Encoding older than 30 days. | Error |
403 | ForbiddenNot authorized to delete the Encoding. | Error |
404 | Not FoundEncoding or Factory not found. | Error |
signed encoding url
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-url.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /encodings/{id}/signed-url.json
Returns a signed url pointing to an Encoding.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
expires integer In query optional Duration in seconds for validity period. |
Example responses
200 Response
{
"signed_url": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a signed url. | EncodingSignedUrl |
404 | Not FoundEncoding or Factory not found. | Error |
signed encoding urls
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/signed-urls.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /encodings/{id}/signed-urls.json
Returns a list of signed urls pointing to an Encoding’s outputs.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"signed_urls": [
"string"
]
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a list of signed urls. | EncodingSignedUrls |
404 | Not FoundEncoding or Factory not found | Error |
retry encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/retry.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /encodings/{id}/retry.json
Retries a failed encoding.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"retried": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully requested reprocessing of the Encoding. | RetriedResponse |
403 | ForbiddenNot authorized to retry the Encoding. | Error |
404 | Not FoundEncoding or Factory not found. | Error |
cancel encoding
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/encodings/{id}/cancel.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /encodings/{id}/cancel.json
Cancels an Encoding.
Parameters
id string In path required Id of an Encoding. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"canceled": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKEncoding has been successfully canceled. | CanceledResponse |
400 | Bad RequestTried to cancel an Encoding older than 30 days. | Error |
403 | ForbiddenNot authorized to cancel the Encoding. | Error |
404 | Not FoundEncoding or Factory not found. | Error |
factories
factories
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/factories.json',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/factories.json', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/factories.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /factories.json
Returns a collection of Factory objects.
Returns a collection of Factory objects.
Parameters
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
with_storage_provider string In query optional if set to true , results will include a storage provider’s id |
Example responses
200 Response
{
"type": "object",
"properties": {
"factories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
},
"page": {
"type": "integer",
"description": "A number of the fetched page."
},
"per_page": {
"type": "integer",
"description": "A number of factories per page."
},
"total": {
"type": "integer",
"description": "A number of all factories stored in the db."
}
}
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a list of Factories. | PaginatedFactoryCollection |
create factory
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/factories.json',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/factories.json', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/factories.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /factories.json
Creates a new factory
Body parameter
{
"type": "object",
"required": [
"name"
],
"properties": {
"aws_access_key": {
"type": "string",
"description": "AWS access key."
},
"aws_secret_key": {
"type": "string",
"description": "AWS secret key."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_recursive": {
"type": "boolean"
},
"input_bucket_sync_every_n_min": {
"type": "integer",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"name": {
"type": "string",
"description": "Name of the Factory."
},
"outputs_path_format": {
"type": "string",
"description": "Specify the directory where the output files should be stored. By default it is not set. More info [here](https://cloud.telestream.net/docs#path-format---know-how)."
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"storage_credential_attributes": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"port": {
"type": "integer"
}
}
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
}
}
}
Parameters
with_storage_provider string In query optional if set to true , results will include a storage provider’s id |
required none |
Example responses
201 Response
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
Responses
Status | Description | Schema |
---|---|---|
201 | CreatedSuccessfully created a Factory | Factory |
400 | Bad RequestFailed to create a Factory | Error |
403 | ForbiddenNot authorized to create a Factory | Error |
factory
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/factories/{id}.json',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/factories/{id}.json', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/factories/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /factories/{id}.json
Returns a Factory object.
Returns a Factory object.
Parameters
id string In path required id of a factory |
with_storage_provider string In query optional if set to true , results will include a storage provider’s id |
Example responses
200 Response
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Factory | Factory |
403 | ForbiddenUnauthorized to access the Factory | Error |
404 | Not FoundFactory not found | Error |
update factory
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.patch 'https://api.cloud.telestream.net/flip/3.1/factories/{id}.json',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.patch('https://api.cloud.telestream.net/flip/3.1/factories/{id}.json', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PATCH");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PATCH", "https://api.cloud.telestream.net/flip/3.1/factories/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PATCH /factories/{id}.json
Updates a Factory’s settings. Returns a Factory object.
Body parameter
{
"type": "object",
"required": [
"name"
],
"properties": {
"aws_access_key": {
"type": "string",
"description": "AWS access key."
},
"aws_secret_key": {
"type": "string",
"description": "AWS secret key."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_recursive": {
"type": "boolean"
},
"input_bucket_sync_every_n_min": {
"type": "integer",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"name": {
"type": "string",
"description": "Name of the Factory."
},
"outputs_path_format": {
"type": "string",
"description": "Specify the directory where the output files should be stored. By default it is not set. More info [here](https://cloud.telestream.net/docs#path-format---know-how)."
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"storage_credential_attributes": {
"type": "object",
"properties": {
"host": {
"type": "string"
},
"username": {
"type": "string"
},
"password": {
"type": "string"
},
"port": {
"type": "integer"
}
}
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
}
}
}
Parameters
id string In path required id of the factory |
with_storage_provider string In query optional if set to true , results will include a storage provider’s id |
required none |
Example responses
200 Response
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKOK | Factory |
400 | Bad Requestfailed to update the Factory | Error |
403 | ForbiddenUnauthorized to update the Factory | Error |
404 | Not FoundFactory not found | Error |
toggle factory sync
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json',
params: {
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json', params={
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/factories/{id}/sync.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /factories/{id}/sync.json
Toggles synchronisation settings.
Body parameter
{
"sync": "true"
}
Parameters
id string In path required id of the factory |
required none |
Example responses
200 Response
{
"syncing": false
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully updated synchronisation settings. | FactorySync |
403 | ForbiddenUnauthorized to access the Factory. | Error |
404 | Not FoundFactory not found. | Error |
Presets
Encoding profile presets
Telestream Cloud provides several encoding profile presets which make it easy to setup the correct output formats for your videos.
To manage your profiles
- Log into your Telestream Cloud Dashboard
- Select your Factory
- Click on the
Profiles
Tab - Click
Add profile
and you’ll be able to select from one of the recommended presets.
Available presets
Below you’ll find details about the presets available:
Web
MP4 (H.265)
H.265 video with AAC audio for playback on HTML5 browsers, desktop players, Flash, Apple iPhone (3GS and above) and iPad. Currently it’s premium feature.
parameter | standard quality |
---|---|
preset_name | h265 |
audio bitrate | 128kbps (by default) |
resolution | 640x480 (by default) |
MP4 (H.264)
H.264 video with AAC audio for playback on HTML5 browsers, desktop players, Flash, iPhone (3GS and above) and iPad. Use H264 baseline to support most of phones like first Apple iPhone’s and Blackberry’s.
parameter | standard quality |
---|---|
preset_name | h264 |
audio bitrate | 128kbps (by default) |
resolution | 640x480 (by default) |
WebM (VP8)
VP8 video with Ogg Vorbis audio for playback in HTML5 compatible browsers.
paramater | standard quality |
---|---|
preset_name | webm.vp8 |
audio bitrate | 128kbps (by default) |
resolution | 640x480 (by default) |
OGG (Theora)
Theora video with Ogg Vorbis audio for playback in HTML5 compatible browsers.
parameter | standard quality |
---|---|
preset_name | ogg |
audio bitrate | 128kbps (by default) |
resolution | 640x480 (by default) |
WebM (VP9)
VP9 video with Opus audio for playback in HTML5 compatible browsers.
paramater | standard quality |
---|---|
preset_name | webm.vp9 |
audio bitrate | 192kbps (by default) |
resolution | 640x360 (by default) |
Multiscreen
HTTP Live Streaming (iOS Adaptive Streaming)
## Sub streams
TelestreamCloud::Profile.create!(
:name => "hls.iphone.400k",
:preset_name => "hls.variant",
:video_bitrate => 400,
:segment_time => 5
)
TelestreamCloud::Profile.create!(
:name => "hls.iphone.600k",
:preset_name => "hls.variant",
:video_bitrate => 600,
:segment_time => 5
)
TelestreamCloud::Profile.create!(
:name => "hls.ipad.1200k",
:preset_name => "hls.variant",
:video_bitrate => 1200,
:segment_time => 5
)
TelestreamCloud::Profile.create!(
:name => "hls.audio",
:preset_name => "hls.variant.audio",
:segment_time => 5
)
## iPhone and iPad Playlist
TelestreamCloud::Profile.create!(
:name => "iphone",
:preset_name => "hls.variant.playlist",
:variants => "hls.iphone*,hls.audio",
:extname => ".tar"
)
TelestreamCloud::Profile.create!(
:name => "ipad",
:preset_name => "hls.variant.playlist",
:variants => "hls.iphone*,hls.ipad*,hls.audio",
:extname => ".tar"
)
Special multi-bitrate segmented video for streaming to Apple devices.
Create a Master playlist profile that will list all sub-streams into one file.
parameter | HLS playlist | HLS variants |
---|---|---|
preset_name | hls.variant.playlist | hls.variant |
Then create a profile for each sub-stream of your Master Playlist. Each profile sub-stream (EXT-X-STREAM-INF) contains RESOLUTION, BANDWIDTH tags to help the client to choose an appropriate stream.
iOS devices will stream the best variant depending on the quality of the network connection. See Apple’s recommendation for more details.
You can create different playlists (one for iPhone one for iPad). Only the profiles with their names matching the variant attribute will be added to the playlist.
optional parameters
parameter | attributes |
---|---|
extname | Setting extname to .tar for the playlist profile will create a .tar file that contain all variants that match HLS master playlist format instead of creating separate file for each variant. |
segment_time | Specify the segment duration in seconds. By default it is set to 10 seconds. |
We strongly recommend sending the video object with full list of profiles at once.
There is another way to do so by adding encodings to video previously sent (by POST /encodings.json) - if you prefer this approach then you need to remember to send the playlist file first! If you mess up the order, you may receive NoFilesToUpload : Files list for upload is empty
error.
(new) AES-128 encryption
It is possible to ecrypt video using AES-128. More info in our guides.
MPEG DASH
MPEG standard HTTP based adaptive bitrate streaming solution (supported by YouTube, Netflix).
parameter | MPEG DASH playlist | MPEG DASH variants |
---|---|---|
preset_name | dash.variant.playlist | dash.variant |
optional parameters
parameter | attributes |
---|---|
extname | Setting extname to .tar for the playlist profile will create a .tar file that contain all variants that match MPEG-DASH master playlist format instead of creating separate file for each variant. |
segment_time | Specify the segment duration in seconds. By default it is set to 10 seconds. |
We strongly recommend sending the video object with full list of profiles at once.
There is another way to do so by adding encodings to video previously sent (by POST /encodings.json) - if you prefer this approach then you need to remember to send the playlist file first! If you mess up the order, you may receive NoFilesToUpload : Files list for upload is empty
error.
(new) Common Encryption (CENC)
CENC is now available for DASH. More info here.
Professional
MPEG Program Stream (MPEG-2)
Creates an MPEG Program Stream (PS) file containing MPEG-2 video and MPEG Layer 2 audio.
paramater | MPEG PS |
---|---|
preset_name | mpegps |
MPEG Transport Stream (MPEG-2)
Creates an MPEG Transport Stream (TS) file containing MPEG-2 video and MPEG Layer 2 audio.
paramater | MPEGTS (MPEG-2) |
---|---|
preset_name | mpegts.mpeg2 |
MPEG Transport Stream (H264)
Creates an MPEG Transport Stream (TS) file containing H.264 video and AAC audio.
paramater | MPEG TS (H264) |
---|---|
preset_name | mpegts.h264 |
XDCAM
Creates an MXF file containing MPEG-2 video and PCM audio. A common format used for broadcast program distribution.
paramater | XDCAM |
---|---|
preset_name | xdcam |
Apple ProRes
Creates a QuickTime movie containing Apple ProRes 422 video and PCM audio. A common format used for post-production and delivery to the iTunes store.
paramater | Apple Prores |
---|---|
preset_name | prores422 |
AVC-Intra
Creates an MXF file containing AVC-Intra 50 or 100 video and PCM audio. It’s 10-bit intra-frame compression format used for post-production and archiving while preserving maximum quality.
paramater | AVC-Intra |
---|---|
preset_name | avc.intra |
IMX
Creates an MXF file containing MPEG-2 IMX 30/40/50 video and PCM audio. Sony developed format used for broadcast program distribution that uses intra-frame compression for better editing capabilities.
paramater | IMX |
---|---|
preset_name | imx |
Extras
MP3
MP3 audio preset.
parameter | MP3 |
---|---|
preset_name | mp3 |
audio bitrate | 192kbps (by default) |
M4A (AAC)
MP4 audio preset.
parameter | M4A (AAC) |
---|---|
preset_name | aac |
audio bitrate | 192kbps (by default) |
OGA (Vorbis)
Ogg Vorbis audio preset.
parameter | OGA (Vorbis) |
---|---|
preset_name | vorbis |
audio bitrate | 192kbps (by default) |
Thumbnails
Special preset for creating thumbnails from video.
parameter | Thumbnail |
---|---|
preset_name | thumbnail |
Ruby example
TelestreamCloud::Profile.create!(
:preset_name => "h264", # A valid preset name, as per the tables above
:name => "my-h264", # Unique name for this profile
:h264_crf => 23,
:h264_profile => "baseline",
:h264_level => "3.0",
:width => "480",
:height => "320"
)
Add an H264 profile
Telestream Cloud gives you complete control of presets using the API and the available libraries. For this, simply pass the preset_name
attribute instead of the command
attribute.
Ruby example
TelestreamCloud::Profile.create!(
:name => "h264",
:preset_name => "h264",
:width => 480,
:height => 320,
:watermark_url => "https://cloud.telestream.net/images/cloud-logo.png",
:watermark_bottom => 5,
:watermark_right => 5
)
Add Watermarking
You may want to add watermarking to your encodings. Use the api to set the url and the position of a remote image to use as a watermark.
Ruby example
TelestreamCloud::Profile.create!(
:preset_name => "h264",
....
:frame_count => 5
)
Create Thumbnails
You have two ways of creating thumbnails.
- Encodings will not create any screenshots by default.
You can change the amount of captured thumbnails using the
frame_count
attribute.
Screenshots will be generated and uploaded to the S3 bucket with the name using the following convention: $path$_$screenshot_number$.jpg
e.g. (my-path/2f8760b7e0d4c7dbe609b5872be9bc3b_4.jpg
).
Ruby example
TelestreamCloud::Profile.create!(
:preset_name => "thumbnail",
....
:extname => '.jpg', # or .png
:frame_interval => "300f",
:width => 90,
:height => 60,
)
- You can either create a Thumbnail profile. Thumbnails are performed directly on the original video. You can modify the format, size, the aspect mode and the rate.
The resulting encoding will have all the thumbnails listed inside the files
attribute
Ruby example
TelestreamCloud::Profile.create!(
# h264 profile
:preset_name => "h264",
# sets your profile name to h264
:name => "h264",
# 2 pass encoding
:two_pass => true,
# 30 fps
:fps => 30,
# mp4 format and .mp4 extname
:extname => ".mp4"
# 48k sample rate
:audio_sample_rate => 48000,
# Resolution 1080x720
:height => 720,
:width => 1080,
# set the s3 destination
:outputs_path_format => "my/path/:id",
# don't upscale the video if the input is smaller than your profile resolution
:upscale => false,
# starts the clip after 10 seconds
:clip_offset => "00:00:10",
# Cut the clip after 20 minutes
:clip_length => "00:20:00",
# Keep aspect ratio
:aspect_mode => 'letterbox',
# Bitrates
:video_bitrate => 2200,
:audio_bitrate => 128,
)
Complete settings
You can set numerous of options to make your encoding just right.
FFmpeg Neckbeard
Telestream Cloud provides complete control over the commands used to convert video. You can log in to your Telestream Cloud Dashboard and choose from our presets, or you can use the API to access the bare metal.
Stacks
As ffmpeg API changes, we can’t always update ffmpeg without breaking your commands. That’s where presets become handy. To make sure your commands are backward compatible with the encoding API and ffmpeg’s API, we are using separate stacks of tools. The default stack is corepack-shifu. There is also corepack-2, corepack-3 and corepack-4.
If you use API to create your profiles and want to stay on the old stack, make sure you specify ‘stack’ => 'name_of_the_deprecated_stack_here’.
We highly recommend to switch to presets or to the newest stack (corepack-shifu). It improves encoding/decoding speed and formats/codecs support.
API
All of the fields below are required when creating an advanced profile.
parameters | attributes |
---|---|
extname | File extension, beginning with ’.’, of the output video. |
command | Video conversion command (in most cases an ffmpeg command). |
name | Which is a unique name inside your Factory to reference your profile. |
Telestream Cloud provides full access to a suite of powerful video conversion tools. These tools can be used together in one profile to output a variety of formats.
To execute multiple commands in one profile, you must separate each with a \n
(newline) or ;
(semicolon).
Telestream Cloud provides a few api tokens
you can use in your commands:
parameters | attributes |
---|---|
$input_file$ | input filename |
$output_file$ | output filename |
$width$ | width defined in your profile |
$height$ | height defined in your profile |
$record_id$ | encoding ID |
$filters$ | scale your video considering the aspect mode and resolution attributes of your profile. |
$audio_sample_rate$ | audio sample rate |
$audio_channels$ | audio channels (default is copy ) |
$audio_bitrate$ | audio_bitrate |
$video_quality$ | video bitrate or h264 crf |
$video_bitrate$ | video_bitrate only |
$max_audio_bitrate$ | audio bitrate threshold |
$max_video_bitrate$ | video bitrate threshold |
$fps$ | frame rate (default is copy ) |
$clip$ | subset of the video to be encoded |
Examples
Ruby example
TelestreamCloud::Profile.create!(
:stack => "corepack-3",
:name => "h264.SD",
:width => 480,
:height => 320,
:h264_crf => 23,
:audio_bitrate => 128,
:extname => ".mp4",
:audio_sample_rate => 44100,
:keyframe_interval => 250,
:command => "ffmpeg -i $input_file$ -threads 0 -c:a libfaac -c:v libx264 -preset medium $video_quality$ $audio_bitrate$ $audio_sample_rate$ $keyframes$ $fps$ -y video_tmp_noqt.mp4\nqt-faststart video_tmp_noqt.mp4 $output_file$"
)
PHP example
<?php
$panda->post('/profiles.json', array(
'stack' => "corepack-3",
'name' => "h264.SD",
'width' => 480,
'height' => 320,
'h264_crf' => 23,
'audio_bitrate' => 128,
'extname' => ".mp4",
'audio_sample_rate' => 44100,
'keyframe_interval' => 250,
'command' => 'ffmpeg -i $input_file$ -threads 0 -c:a libfaac -c:v libx264 -preset medium $video_quality$ $audio_bitrate$ $audio_sample_rate$ $keyframes$ $fps$ -y video_tmp_noqt.mp4\nqt-faststart video_tmp_noqt.mp4 $output_file$'
));
?>
Let’s create a custom h.264 profile.
You may not find a preset for your exactly need but the following examples should help you to encode videos into some popular formats.
FLV
TelestreamCloud::Profile.create!(
:stack => "corepack-3",
:name => "flv",
:width => 480,
:height => 320,
:video_bitrate => 500,
:audio_bitrate => 128,
:extname => ".flv",
:command => "ffmpeg -i $input_file$ -threads 0 $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
AVI
TelestreamCloud::Profile.create!(
:stack => "corepack-3",
:name => "avi",
:width => 480,
:height => 320,
:video_bitrate => 500,
:audio_bitrate => 128,
:extname => ".avi",
:command => "ffmpeg -i $input_file$ -threads 0 -c:v msmpeg4 -c:a libmp3lame -tag:v MP43 $audio_sample_rate$ $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
WMV
TelestreamCloud::Profile.create!(
:stack => "corepack-3",
:name => "wmv",
:width => 480,
:height => 320,
:video_bitrate => 500,
:audio_bitrate => 128,
:extname => ".wmv",
:command => "ffmpeg -i $input_file$ -threads 0 -c:v wmv2 -c:a wmav2 $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
OGG - 2 pass
TelestreamCloud::Profile.create!(
:stack => "corepack-3",
:name => "ogg.2pass",
:width => 480,
:height => 320,
:video_bitrate => 500,
:audio_bitrate => 128,
:extname => ".ogg",
:command => "ffmpeg -i $input_file$ -f ogg -pass 1 -threads 0 -c:v libtheora -c:a libvorbis $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y /dev/null\nffmpeg -i $input_file$ -f ogg -pass 2 -threads 0 -c:v libtheora -c:a libvorbis $audio_sample_rate$ $video_bitrate$ $audio_bitrate$ $fps$ $filters$ -y $output_file$"
)
Our presets support two pass encoding but if you need the command, here is the way to do it:
Available conversion tools
Here is the list of conversion tools available in Telestream Cloud.
FFmpeg
FFmpeg is a complete, cross-platform solution to record, convert and stream audio and video. It includes libavcodec - the leading audio/video codec library.
We provide a recent version of ffmpeg, compiled from the git repository with as many codecs as we could get our hands on (See full list of Supported File Formats and Codecs).
command name: ffmpeg
command version: Ffmpeg 0.10
Lame
See http://lame.sourceforge.net/
LAME is a high quality MPEG Audio Layer III (MP3) encoder.
command name: lame
command version: Lame 3.99
MEncoder
An other video encoder built from the same code as MPlayer.
command name: mencoder
Segmenter
Segmenter divides input file into smaller parts for HLS playlists.
command name: segmenter
Manifester
Manifester is a tool to create m3u8 manifest file.
command name: manifester
QtFaststart
See https://multimedia.cx/eggs/improving-qt-faststart/
Moves the moov atom in front of the data to improve network streaming.
command name: qt-faststart
QtRotate
See https://github.com/danielgtaylor/qtrotate
QtRotate is a tool to work with rotated files.
command name: qtrotate
Yamdi
See http://yamdi.sourceforge.net/
Yamdi is a metadata injector for FLV files.
command name: yamdi
MP4Box
See https://gpac.wp.mines-telecom.fr/mp4box/
Mp4Box is a tool for manipulating multimedia files.
command name: MP4Box
notifications
notifications
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/notifications.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/notifications.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/notifications.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/notifications.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /notifications.json
Returns a Factory’s notification settings.
Parameters
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"url": "string",
"delay": 0,
"send_video_payload": true,
"events": {
"encoding_completed": true,
"encoding_progress": true,
"video_created": true,
"video_encoded": true
}
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Factory’s notification settings | CloudNotificationSettings |
404 | Not FoundFactory not found. | Error |
update notifications
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/notifications.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.put('https://api.cloud.telestream.net/flip/3.1/notifications.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/notifications.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/notifications.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /notifications.json
Updates a Factory’s notification settings.
Body parameter
{
"url": "string",
"delay": 0,
"send_video_payload": true,
"events": {
"encoding_completed": true,
"encoding_progress": true,
"video_created": true,
"video_encoded": true
}
}
Parameters
factory_id string In query required Id of a Factory. |
required none |
Example responses
200 Response
{
"url": "string",
"delay": 0,
"send_video_payload": true,
"events": {
"encoding_completed": true,
"encoding_progress": true,
"video_created": true,
"video_encoded": true
}
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully updated the Factory’s notification settings. | CloudNotificationSettings |
400 | Bad RequestFailed to update notification settings using the provided parameters. | Error |
403 | ForbiddenNot authorized to update the Factory’s notification settings. | Error |
404 | Not FoundFactory not found. | Error |
profiles
profiles
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /profiles.json
Returns a collection of Profile objects.
Parameters
factory_id string In query required Id of a Factory. |
exclude_advanced_services boolean In query optional Determine whether exclude Advanced Services profiles from the results. By default this is not set. |
expand boolean In query optional If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
Example responses
200 Response
{
"profiles": [
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a collection of Profiles | PaginatedProfilesCollection |
404 | Not FoundFactory not found | None |
create profile
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/profiles.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/profiles.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/profiles.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /profiles.json
Creates a Profile
Body parameter
{
"preset_name": "aac",
"advanced_fps_conversion": "telestream",
"aspect_mode": "preserve",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": "string",
"audio_codec": "string",
"audio_format": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"closed_captions": "add",
"dash_profile": "string",
"deinterlace": "keep_fps",
"deinterlace_frames": "string",
"dnxhd_type": "string",
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_offsets": "2s, 10s, 250f, 400f",
"frame_interval": "1000f",
"frame_count": 0,
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"imx_type": "string",
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": 0,
"max_rate": 0,
"merge_audio_streams": "string",
"name": "string",
"outputs_path_format": "string",
"pmt_pid": "string",
"prores_format": "string",
"segment_time": "string",
"size": "string",
"starting_timecode": "string",
"tar": true,
"transport_rate": "string",
"ts_pids": "string",
"upscale": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"mute_audio_tracks": true,
"byte_range_requests": "string",
"lang": "string",
"use_editlist": "string",
"audio_map": "string",
"audio_stream_id": "string",
"bumpers": {},
"codec_preset": "ultrafast",
"color_metadata": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": "string",
"dynamic_recipe": "string",
"playlist_type": "string",
"preset_version": "string",
"segment_delimiter": "string",
"sws_flags": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": "string",
"telestream_cost_scaler": "string",
"telestream_search_length_scaler": "string",
"telestream_subpel_mode": "string",
"trailers": {},
"vantage_group_id": "string",
"watermark_bumpers": "string",
"watermark_trailers": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "string",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true,
"title": "string",
"time_code": true
}
Parameters
factory_id string In query required Id of a Factory. |
exclude_advanced_services boolean In query optional none |
expand boolean In query optional If expand option is set Profile objects will contain all command parameters, even if their value is default. By default it is not set. |
required none |
Example responses
200 Response
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully created a Profile | Profile |
400 | Bad RequestPosted incorrect parameters | Error |
403 | ForbiddenNot authorized to create a Profile | Error |
404 | Not FoundFactory not found | Error |
update profile
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.put 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.put('https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("PUT");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("PUT", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
PUT /profiles/{id}.json
Updates a given Profile
Body parameter
{
"preset_name": "aac",
"advanced_fps_conversion": "telestream",
"aspect_mode": "preserve",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": "string",
"audio_codec": "string",
"audio_format": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"closed_captions": "add",
"dash_profile": "string",
"deinterlace": "keep_fps",
"deinterlace_frames": "string",
"dnxhd_type": "string",
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_offsets": "2s, 10s, 250f, 400f",
"frame_interval": "1000f",
"frame_count": 0,
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"imx_type": "string",
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": 0,
"max_rate": 0,
"merge_audio_streams": "string",
"name": "string",
"outputs_path_format": "string",
"pmt_pid": "string",
"prores_format": "string",
"segment_time": "string",
"size": "string",
"starting_timecode": "string",
"tar": true,
"transport_rate": "string",
"ts_pids": "string",
"upscale": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"mute_audio_tracks": true,
"byte_range_requests": "string",
"lang": "string",
"use_editlist": "string",
"audio_map": "string",
"audio_stream_id": "string",
"bumpers": {},
"codec_preset": "ultrafast",
"color_metadata": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": "string",
"dynamic_recipe": "string",
"playlist_type": "string",
"preset_version": "string",
"segment_delimiter": "string",
"sws_flags": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": "string",
"telestream_cost_scaler": "string",
"telestream_search_length_scaler": "string",
"telestream_subpel_mode": "string",
"trailers": {},
"vantage_group_id": "string",
"watermark_bumpers": "string",
"watermark_trailers": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "string",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true,
"title": "string",
"time_code": true
}
Parameters
id string In path required none |
factory_id string In query required Id of a Factory. |
exclude_advanced_services boolean In query optional none |
expand boolean In query optional If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set. |
required none |
Example responses
200 Response
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully updated the Profile | Profile |
400 | Bad RequestPosted incorrect parameters | Error |
403 | ForbiddenNot authorized to update the Profile | Error |
404 | Not FoundProfile or Factory not found | Error |
delete profile
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.delete('https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /profiles/{id}.json
Deletes a given Profile
Parameters
id string In path required Id of a Profile |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"deleted": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKthe Profile object has been successfully deleted | DeletedResponse |
403 | ForbiddenUnauthorized to delete the Profile | Error |
404 | Not FoundProfile or Factory not found | Error |
copy profile
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/profiles/{id}/copy.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /profiles/{id}/copy.json
Copies a given Profile
Body parameter
{
"dest_factory_id": "string",
"profile_name": "string"
}
Parameters
id string In path required Id of a Profile. |
factory_id string In query required Id of a Factory. |
expand boolean In query optional If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set. |
body object In body required none |
» dest_factory_id string In body required an id of a target Factory that will own a copy of the Profile |
» profile_name string In body required a name for a copy of the Profile |
Example responses
200 Response
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully copied the Profile | Profile |
403 | ForbiddenUnauthorized to copy the Profile | Error |
404 | Not FoundProfile, the old Factory, or the new Factory not found | Error |
profile
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /profiles/{id_or_name}.json
Returns a Profile object.
Parameters
id_or_name string In path required A name or an id of a Profile. |
factory_id string In query required Id of a Factory. |
expand boolean In query optional If expand option is set Profile objects will contain all command parameters, even if their value is default. By default this is not set. |
Example responses
200 Response
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Profile. | Profile |
404 | Not FoundProfile or Factory not found. | Error |
profile encodings
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/profiles/{id_or_name}/encodings.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /profiles/{id_or_name}/encodings.json
Returns a list of Encodings that belong to a Profile.
Parameters
id_or_name string In path required Id or name of a Profile. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"encodings": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a collection of Encodings. | PaginatedEncodingsCollection |
404 | Not FoundProfile or Factory not found. | Error |
videos
videos
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos.json
Returns a collection of Video objects.
Parameters
factory_id string In query required Id of a Factory. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
Example responses
200 Response
{
"videos": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKVideos successfully fetched. | PaginatedVideoCollection |
create video
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /videos.json
Creates a Video from a provided source_url.
Body parameter
{
"source_url": "string",
"profiles": "string",
"payload": "string",
"pipeline": "string",
"subtitle_files": [
"string"
],
"extra_files": {
"property1": [
"string"
],
"property2": [
"string"
]
},
"extra_variables": {
"property1": "string",
"property2": "string"
},
"path_format": "string",
"clip_end": "00:00:06:00@25",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"starting_timecode": "string",
"store_id": "string"
}
Parameters
factory_id string In query required Id of a Factory. |
body object In body required none |
» source_url string In body optional An URL pointing to a source file. |
» profiles string In body optional Comma-separated list of profile names or IDs to be used during encoding. Alternatively, specify none so no encodings are created yet. |
» payload string In body optional Arbitrary string stored along the Video object. |
» pipeline string In body optional String-encoded JSON describing profiles pipeline. |
» subtitle_files [string] In body optional A list of urls pointing to remote subtitle files. |
» extra_files object In body optional none |
»» additionalProperties [string] In body optional none |
» extra_variables object In body optional none |
»» additionalProperties string In body optional none |
» path_format string In body optional none |
» clip_end string In body optional Clip ends at a specific time (timecode). |
» clip_length string In body optional A clip’s duration. |
» clip_offset string In body optional Clip starts at a specific offset. |
» starting_timecode string In body optional none |
» store_id string In body optional An individual store_id for this video processing. If provided will replace store_id from cloud factory but must match underlying cloud provider and region. |
Example responses
201 Response
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
Responses
Status | Description | Schema |
---|---|---|
201 | CreatedVideo successfully created. | Video |
403 | ForbiddenUser not allowed to create videos. | Error |
500 | Internal Server ErrorFailed to create a video. | None |
Payload
Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID.
queued videos
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/queued.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/queued.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/queued.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/queued.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos/queued.json
Returns a collection of Video objects queued for encoding.
Parameters
factory_id string In query required Id of a Factory. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
Example responses
200 Response
{
"videos": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKReturns a collection of Video objects queued for encoding. | PaginatedVideoCollection |
resubmit video
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos/resubmit.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /videos/resubmit.json
Resubmits a video to encode.
Resubmits the video to encode. Please note that this option will work only for videos in success
status.
Body parameter
{
"video_id": "string"
}
Parameters
factory_id string In query required Id of a Factory. |
body object In body required none |
» video_id string In body optional Id of the video. |
Example responses
400 Response
{
"error": "string",
"message": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKVideo successfully resubmitted. | None |
400 | Bad RequestInvalid input. | Error |
404 | Not FoundVideo or Factory not found | Error |
video
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos/{id}.json
Returns a Video object.
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Video | Video |
403 | ForbiddenUnauthorized to access the Video | Error |
404 | Not FoundVideo or Factory not found | Error |
delete video
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/videos/{id}.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.delete('https://api.cloud.telestream.net/flip/3.1/videos/{id}.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/videos/{id}.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /videos/{id}.json
Deletes a Video object.
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"deleted": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKThe Video object has been successfully deleted. | DeletedResponse |
403 | ForbiddenUnauthorized to delete the Video. | Error |
404 | Not FoundVideo or Factory not found. | Error |
signed video url
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/signed-url.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos/{id}/signed-url.json
Returns a signed url pointing to a Video.
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"signed_url": "string"
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a signed video url. | SignedVideoUrl |
404 | Not FoundVideo of Factory not found. | Error |
video metadata
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/metadata.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos/{id}/metadata.json
Returns a Video’s metadata
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"type": "object",
"additionalProperties": null
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched the Video’s metadata | VideoMetadata |
404 | Not FoundVideo or Factory not found | Error |
cancel video
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/cancel.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos/{id}/cancel.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/cancel.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/cancel.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /videos/{id}/cancel.json
Cancel video and all encodings
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"canceled": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully cancel video | CanceledResponse |
404 | Not FoundVideo or Factory not found | Error |
video encodings
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/encodings.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /videos/{id}/encodings.json
Returns a list of Encodings that belong to a Video.
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
screenshots string In query optional Determines whether the response will include screenshots. By default this is not set. |
precise_status string In query optional Determines whether the response will include a precise status. By default this is not set. |
Example responses
200 Response
{
"encodings": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a collection of Encodings. | PaginatedEncodingsCollection |
404 | Not FoundVideo or Factory not found | Error |
upload video
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/videos/upload.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/videos/upload.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/upload.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/videos/upload.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /videos/upload.json
Creates an upload session.
Body parameter
{
"file_size": 0,
"file_name": "string",
"extra_files": [
{
"tag": "string",
"file_size": 0,
"file_name": "string"
}
],
"profiles": "string",
"path_format": "string",
"payload": "string",
"extra_variables": {
"property1": "string",
"property2": "string"
},
"watermark_url": "string",
"watermark_left": "100px",
"watermark_top": "100%",
"watermark_right": "string",
"watermark_bottom": "string",
"watermark_width": "string",
"watermark_height": "string",
"clip_length": "string",
"clip_offset": "00:00:10",
"multi_chunk": true,
"store_id": "string"
}
Parameters
factory_id string In query required Id of a Factory. |
body object In body required none |
» file_size integer(int64) In body required Size of the file that will be uploaded in bytes . |
» file_name string In body required Name of the file that will be uploaded. |
optional A list of names of additional files that will be uploaded. |
»» tag string In body required none |
»» file_size integer(int64) In body required none |
»» file_name string In body required none |
» profiles string In body optional A comma-separated list of profile names or IDs to be used during encoding. Alternatively, specify none so no encodings will created right away. |
» path_format string In body optional none |
» payload string In body optional Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID. |
» extra_variables object In body optional none |
»» additionalProperties string In body optional none |
» watermark_url string In body optional URL pointing to an image that will be used asa watermark. |
» watermark_left string In body optional Determines distance between the left edge of a video and the left edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_right is not. |
» watermark_top string In body optional Determines distance between the top edge of a video and the top edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_bottom is not. |
» watermark_right string In body optional Determines distance between the right edge of a video and the right edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_left is not. |
» watermark_bottom string In body optional Determines distance between the bottom edge of a video and the bottom edge of a watermark image. Can be specified in pixels or percents. This parameter can be set only if watermark_top is not. |
» watermark_width string In body optional Determines width of the watermark image. Should be specified in pixels. |
» watermark_height string In body optional Determines width of the watermark image. Should be specified in pixels. |
» clip_length string In body optional Length of the uploaded video. Should be formatted as follows: HH:MM:SS |
» clip_offset string In body optional Clip starts at a specific offset. |
» multi_chunk boolean In body optional none |
» store_id string In body optional An individual store_id for this video processing. If provided will replace store_id from cloud factory but must match underlying cloud provider and region. |
Example responses
201 Response
{
"type": "object",
"required": [
"id",
"location"
],
"properties": {
"id": {
"type": "string",
"description": "An unique identifier of the UploadSession."
},
"location": {
"type": "string",
"description": "An URL to which chunks of the uploaded file should be sent"
},
"parts": {
"type": "integer",
"description": "A number of chunks that are expected by the upstream."
},
"part_size": {
"type": "integer",
"description": "An expected size of uploaded chunks."
},
"max_connections": {
"type": "integer",
"description": "A maximum number of concurrent connections."
},
"extra_files": {
"type": "object",
"additionalProperties": null,
"description": "An object containing additional files uploaded using the session."
}
}
}
Responses
Status | Description | Schema |
---|---|---|
201 | CreatedUpload session successfully created. | UploadSession |
403 | ForbiddenUser not allowed to create an upload session. | Error |
500 | Internal Server ErrorFailed to create an upload session. | None |
delete video source
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.delete 'https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.delete('https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("DELETE");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("DELETE", "https://api.cloud.telestream.net/flip/3.1/videos/{id}/source.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
DELETE /videos/{id}/source.json
Delete a video’s source file.
Parameters
id string In path required Id of a Video. |
factory_id string In query required Id of a Factory. |
Example responses
200 Response
{
"deleted": true
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully deleted the Video’s source file. | DeletedResponse |
403 | ForbiddenNot authorized to delete the Video’s source file. | Error |
404 | Not FoundVideo or Factory not found. | Error |
workflows
workflows
Code samples
require 'rest-client'
require 'json'
headers = {
'Accept' => 'application/json',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.get 'https://api.cloud.telestream.net/flip/3.1/workflows.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Accept': 'application/json',
'X-Api-Key': 'API_KEY'
}
r = requests.get('https://api.cloud.telestream.net/flip/3.1/workflows.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/workflows.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Accept": []string{"application/json"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("GET", "https://api.cloud.telestream.net/flip/3.1/workflows.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
GET /workflows.json
Returns a collection of Workflows that belong to a Factory.
Parameters
factory_id string In query required Id of a Factory. |
page string In query optional A page to be fetched. Default is 1 . |
per_page string In query optional A number of results per page. Default is 100 . |
Example responses
200 Response
{
"workflows": [
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully fetched a collection of Workflows that belong to the Factory | PaginatedWorkflowsCollection |
404 | Not FoundFactory not found. | Error |
workorders
create workorder
Code samples
require 'rest-client'
require 'json'
headers = {
'Content-Type' => 'multipart/form-data',
'X-Api-Key' => 'API_KEY'
}
result = RestClient.post 'https://api.cloud.telestream.net/flip/3.1/workorders.json',
params: {
'factory_id' => 'string'
}, headers: headers
p JSON.parse(result)
import requests
headers = {
'Content-Type': 'multipart/form-data',
'X-Api-Key': 'API_KEY'
}
r = requests.post('https://api.cloud.telestream.net/flip/3.1/workorders.json', params={
'factory_id': 'string'
}, headers = headers)
print r.json()
URL obj = new URL("https://api.cloud.telestream.net/flip/3.1/workorders.json?factory_id=string");
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("POST");
int responseCode = con.getResponseCode();
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
System.out.println(response.toString());
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"multipart/form-data"},
"X-Api-Key": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "https://api.cloud.telestream.net/flip/3.1/workorders.json", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
// ...
}
POST /workorders.json
Creates a Workorder.
Body parameter
profile_id: string
file: string
source_url: string
Parameters
factory_id string In query required Id of a Factory. |
body object In body optional none |
» profile_id string In body optional Id of a Profile. |
» file string(binary) In body optional Input file. |
» source_url string In body optional URL pointing to an input file. |
Responses
Status | Description | Schema |
---|---|---|
200 | OKSuccessfully created a Workorder. | None |
400 | Bad RequestFailed to create a Workorder. | None |
Schemas
Factory
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
Properties
id string optional A unique identifier of a Factory. |
name string optional Human-readable identifier of a Factory. |
factory_region string optional A region where the factory is located. |
output_bucket_name string optional A bucket where processed files will be stored. |
acl string optional Specify if your files are public or private (private files need authorization url to access). By default this is not set. |
created_at string(datetime) optional A date and time when a Factory has been created. |
updated_at string(datetime) optional A date and time when a Factory has been updated last time. |
url string optional An URL pointing to the output_bucket_name. |
server_side_encryption boolean optional Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set. |
input_bucket_name string optional A name of an input bucket. |
input_bucket_watch boolean optional Determines whether the Factory should be notified about new files added to the input bucket. |
input_bucket_files_map object optional none |
input_bucket_sync_every_n_min string optional Determines how often the input bucket is synchronised. |
input_bucket_recursive string optional none |
input_bucket_file_pattern string optional A pattern that will be used to locate files in the input bucket. Valid wildcards might be used. |
outputs_path_format string optional none |
storage_provider integer optional Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9 |
provider_specific_settings object optional none |
Enumerated Values
acl public |
acl private |
PaginatedFactoryCollection
{
"type": "object",
"properties": {
"factories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique identifier of a Factory."
},
"name": {
"type": "string",
"description": "Human-readable identifier of a Factory."
},
"factory_region": {
"type": "string",
"description": "A region where the factory is located."
},
"output_bucket_name": {
"type": "string",
"description": "A bucket where processed files will be stored."
},
"acl": {
"type": "string",
"enum": [
"public",
"private"
],
"description": "Specify if your files are public or private (private files need authorization url to access). By default this is not set."
},
"created_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been created."
},
"updated_at": {
"type": "string",
"format": "datetime",
"description": "A date and time when a Factory has been updated last time."
},
"url": {
"type": "string",
"description": "An URL pointing to the output_bucket_name."
},
"server_side_encryption": {
"type": "boolean",
"description": "Specify if you want to use multi-factor server-side 256-bit AES-256 data encryption with Amazon S3-managed encryption keys (SSE-S3). Each object is encrypted using a unique key which as an additional safeguard is encrypted itself with a master key that S3 regularly rotates. By default this is not set."
},
"input_bucket_name": {
"type": "string",
"description": "A name of an input bucket."
},
"input_bucket_watch": {
"type": "boolean",
"description": "Determines whether the Factory should be notified about new files added to the input bucket."
},
"input_bucket_files_map": {
"type": "object"
},
"input_bucket_sync_every_n_min": {
"type": "string",
"description": "Determines how often the input bucket is synchronised."
},
"input_bucket_recursive": {
"type": "string"
},
"input_bucket_file_pattern": {
"type": "string",
"description": "A pattern that will be used to locate files in the input bucket. Valid wildcards might be used."
},
"outputs_path_format": {
"type": "string"
},
"storage_provider": {
"type": "integer",
"description": "Specifies which storage provider the factory should use. Available options: S3: 0, Google Cloud Storage: 1, FTP storage: 2, Google Cloud Interoperability Storage: 5, Flip storage: 7, FASP storage: 8, Azure Blob Storage: 9"
},
"provider_specific_settings": {
"type": "object",
"additionalProperties": null
}
}
}
},
"page": {
"type": "integer",
"description": "A number of the fetched page."
},
"per_page": {
"type": "integer",
"description": "A number of factories per page."
},
"total": {
"type": "integer",
"description": "A number of all factories stored in the db."
}
}
}
Properties
factories [Factory] optional none |
page integer optional A number of the fetched page. |
per_page integer optional A number of factories per page. |
total integer optional A number of all factories stored in the db. |
FactorySync
{
"syncing": false
}
Properties
syncing string optional Determines whether a Factory will be synchronised with an input bucket. |
Enumerated Values
syncing false |
syncing starting |
syncing already_started |
Profile
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
Properties
advanced_fps_conversion string optional todo |
aspect_mode string optional Specifies an aspect mode for output videos. The following options are available: - preserve - constrain - letterbox - pad - fill (crop) - stretch - center Default is “letterbox”. |
aspect_ratio string optional A display aspect ratio. By default it is not set. |
audio_bitrate integer optional audio bitrate (in bits/s) |
audio_channels integer optional A number of audio channels. By default it is not set. |
audio_channels_layout string optional A channel layout specifies the spatial disposition of the channels in a multi-channel audio stream. |
audio_channels_per_track integer optional A number of audio channels per track. |
audio_codec string optional Audio codec that will be used by the profile. Available codecs are: libmp3lame , libvorbis , libfdk_aac , dib_ac3, pcm_s16le, mp2, ac3, eac3`. |
audio_format string optional Specifies an audio container. |
audio_map string optional none |
audio_pid string optional Packet identifier used by MPEG formats. |
audio_profile string optional Specifies an audio profile. |
audio_sample_rate integer optional The number of samples of audio carried per second. |
audio_stream_id integer optional none |
audio_streams integer optional A number of audio streams. |
avcintra_class string optional A class of the AVC-Intra video coding. |
buffer_size integer optional Determines the size of the PulseAudio buffer. by default it is not set. |
buffer_size_in_packets string optional todo |
bumpers object optional none |
byte_range_requests boolean optional none |
clip_end string optional Clip ends at a specific time (timecode). |
pixel_format string optional none |
clip_length string optional A clip’s duration. |
clip_offset string optional Clip starts at a specific offset. |
closed_captions string optional One of add (adds captions as a separate streams) or burn (burns captions on video stream using the first subtitle file). By default it is not set. |
color_metadata boolean optional none |
created_at string(datetime) optional A date and time when the Profile has been created. |
crop_input_bottom string optional Distance (in pixels) from the bottom edge of the screen from which you want your crop to be done. |
crop_input_height string optional Width of the cropped image in pixels. |
crop_input_left string optional Distance (in pixels) from the left edge of the screen from which you want your crop to be done. |
crop_input_right string optional Distance (in pixels) from the right edge of the screen from which you want your crop to be done. |
crop_input_top string optional Distance (in pixels) from the top edge of the screen from which you want your crop to be done. |
crop_input_width number optional Height of the cropped image in pixels. |
dash_profile string optional none |
deinterlace string optional One of keep_fps or double_fps . By default it is not set. |
deinterlace_frames string optional none |
description string optional Description of the profile. |
dnxhd_type string optional none |
encryption boolean optional none |
extname string optional File extension. |
fps number optional Null value copy the original fps. By default it is not set. |
frame_count integer optional Evenly spaced number of generated screenshots. By default it is not set. |
frame_interval string optional Thumbnail interval (Frames or seconds). |
frame_offsets string optional Array of offsets (Frames or seconds). |
h264_level string optional A specified set of constraints that indicate a degree of required decoder performance for a profile. |
h264_profile string optional Profiles represent a sub-set of the encoding techniques available in H.264. |
h264_tune string optional Specifies a h264 tuning option. |
height integer optional Height in pixels. |
id string optional none |
imx_type string optional none |
inputs object optional none |
interlace string optional none |
keyframe_interval integer optional Adds a key frame every N frames. Default is 250, adds a key frame every 250 frames. |
keyframe_rate string optional todo |
lang string optional none |
max_rate integer optional A max bitrate tolerance (in bits/s). By default this is not set. |
merge_audio_streams string optional none |
mute_audio_tracks boolean optional Remove audio from input video file. By default it is set to false . |
name string optional A unique machine-readable name that will identify the profile. Helpful later on for filtering encodings by profile. |
outputs object optional none |
outputs_path_format string optional Specify the directory where the output files should be stored. By default it is not set. More information about this here. |
playlist_type string optional none |
pmt_pid string optional none |
preset_name string optional a name of a preset that a profile will use. |
prores_format string optional none |
segment_time integer optional Minimum value is 2, maximum is 60. |
stack string optional none |
starting_timecode string optional none |
telestream_block_size string optional none |
telestream_blur_scaler number optional Minimum value is 0, maximum is 4. |
telestream_cost_scaler number optional Minimum value is 0, maximum is 4. |
telestream_search_length_scaler integer optional Minimum value is 0, maximum is 2. |
telestream_subpel_mode boolean optional none |
time_code string optional If set, timestamps will be added to your videos. By default this is not set. |
title string optional Human-readable name. |
trailers object optional none |
transport_rate string optional none |
ts_pids string optional none |
updated_at string(datetime) optional none |
upscale boolean optional Upscale the video resolution to match your profile. Default is true . |
use_editlist boolean optional none |
variants string optional Pattern utilised to match HLS.Variant presets by name. Default is hls.*. |
video_bitrate integer optional none |
video_pid string optional none |
watermark_bottom string optional Distance from the bottom of the video frame in pixels or percentage of video frame height. Works like CSS. Default is 0 . |
watermark_bumpers boolean optional none |
watermark_height string optional Height of the watermark image in pixels or percentage of video frame height. Default is no resizing |
watermark_left string optional Distance from the left of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0 . |
watermark_right string optional Distance from the right of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0 . |
watermark_top string optional Distance from the top of the video frame in pixels or percentage of video frame height. Works like CSS. Default is 0 . |
watermark_trailers boolean optional none |
watermark_url string optional Url of a watermark image. |
watermark_width string optional Width of the watermark image in pixels or percentage of video frame width. Default is no resizing . |
width integer optional Width in pixels. |
x264_options string optional none |
x265_options string optional none |
xdcam_format string optional none |
tachyon_allow_remove_pulldown boolean optional Enable more sensitive pulldown removal algorithm. |
tachyon_enable_post_pulldown_filter boolean optional If the images you are converting are composited 29.976, but the pulldown pattern was not adhered to when performing the composite, this setting is required to remove combing artifacts. It will also remove combing artifacts related to very poor 3:2 cadence. |
tachyon_media_hint_is_cartoon boolean optional none |
tachyon_media_hint_has_chroma_noise boolean optional Remove chroma noise during the analysis of a video. |
tachyon_more_sensitive_remove_pulldown boolean optional When pulldown is not achieved due to extremely broken cadence, or other factors like highly mixed content or if chroma noise masks motion, the pulldown engine may fall back to de-interlacing rather than removing telecine. If that’s a case, a more sensitive pulldown pattern can be used. This algorithm favors inverse telecine and with lower thresholds for triggering pulldown identification, will maximize the number of progressive frames created from the video. |
tachyon_allow_add_standard_pd boolean optional none |
tachyon_allow_add_2_2pd boolean optional Allows 2:2 (PSF) Insertion. Creates a new series of frames which are based on duplicating the field an interlacing it into top/bottom field. Maintains a film-look. |
tachyon_allow_add_4_4pd boolean optional Allows 4:4 Insertion. Repeats each progressive frame twice on output (motion rate is halved). This setting is used when you want to convert to high progressive frame rates (i.e. 50p/59.94p/60p) but want to preserve film qualities (low motion rate, such as 24p). |
tachyon_allow_add_4_6pd boolean optional 2:3 Insertion. inserts a standard 2:3 telecine pattern to 23.976p video stream to achieve a 29.97i frame rate |
tachyon_allow_add_euro_pd boolean optional Allows Euro Insertion. For field based interpolation rather than pixel-based. This is designed for interlaced or progressive integer frame rate conversions that are being converted to interlaced outputs. This method is valid for 24p to 50i conversions only. |
tachyon_allow_add_adaptive_pd boolean optional Allows Adaptive Insertion. For field-based interpolation rather than using pixel-based interpolation. This algorithm is designed for both integer and non-integer frame rate conversion targets - as long as one of them is a non-integer rate (23.976, 29.97, 59.94, etc). This creates NTSC-PAL conversions clean of motion artifacts at the expense of potential slight stutter. Stutter is most noticeable with material that has smooth and uniform motion. |
tachyon_motion_amount string optional This setting determines how much Tachyon will trust motion vectors in the creation of new images |
tachyon_fallback_size string optional This option specifies the transition region size between fallback areas and motion compensated areas. A larger fallback size allows more blending (feathering) to occur between the regions. |
tachyon_mblock_size string optional This option specifies the size of a motion block. |
tachyon_cut_detection_sensitivity number optional none |
eac3_evolution_enable boolean optional Enables the trusted metadata framework. |
eac3_bitstream_mode string optional Selects the type of audio service. **For 1/0 Voiceover will be used when Voiceover/Karaoke is selected. For 2/0 and above Karaoke will be used. |
eac3_ninety_degree_phase_shift boolean optional Applies a 90-degree phase shift to the surround channels; necessary if the output file is being decoded by a Dolby Surround Pro Logic or Pro Logic II decoder. |
eac3_three_decibel_attenuation boolean optional Attenuates the surround channels by 3 dB before encoding. |
eac3_enable_lfe_low_pass_filter boolean optional Applies a 120 Hz eighth order lowpass filter to the LFE input prior to encoding. |
eac3_analog_to_digital_converter_type string optional Allows audio that has passed through an A/D conversion stage to be marked as such. |
eac3_stereo_downmix_preference string optional none |
eac3_lt_rt_center_mix_level string optional Indicates the level shift applied to the center channel when adding to the left and right outputs during a downmix to a Lt/Rt output. |
eac3_lt_rt_surround_mix_level string optional Indicates the level shift applied to the surround channel when adding to the left and right outputs during a downmix to a Lt/Rt output. |
eac3_lo_ro_center_mix_level string optional Indicates the level shift applied to the center channel when adding to the left and right outputs during a downmix to a Lo/Ro output. |
eac3_lo_ro_surround_mix_level string optional Indicates the level shift applied to the surround channel when adding to the left and right outputs during a downmix to a Lo/Ro output. |
eac3_surround_ex_mode string optional Indicates whether the audio stream was encoded using Dolby EX. |
eac3_drc_line_mode_profile string optional Dynamic Range Control for Line Mode. |
eac3_drc_rf_mode_profile string optional Dynamic Range Control for RF Mode. |
eac3_dialog_normalization integer optional Represents the volume level of dialog in the audio stream which can be used by a Dolby Digital decoder. This aids the decoder in matching volume between program sources. Minimum value is 1, maximum is 31. |
eac3_room_type string optional none |
eac3_mixing_level integer optional Minimum value is 80, maximum is 111. |
eac3_copyright_protected boolean optional Indicates whether the encoded bitstream is copyright protected. |
eac3_original_bitstream boolean optional Indicates whether the encoded bitstream is the master version, or a copy. |
Enumerated Values
advanced_fps_conversion telestream |
advanced_fps_conversion tachyon |
audio_channels_layout 1 |
audio_channels_layout 2 |
audio_channels_layout 2.1 |
audio_channels_layout 3 |
audio_channels_layout 3.0(back) |
audio_channels_layout 3.1 |
audio_channels_layout 4 |
audio_channels_layout 4.1 |
audio_channels_layout quad |
audio_channels_layout 5 |
audio_channels_layout 5.0(side) |
audio_channels_layout 5.1(side) |
audio_channels_layout 6 |
audio_channels_layout 6.1 |
audio_channels_layout 7 |
audio_channels_layout 7.1 |
audio_channels_layout mono |
audio_channels_layout stereo |
audio_format pcm_s24le |
audio_format pcm_s16le |
avcintra_class 50 |
avcintra_class 100 |
closed_captions add |
closed_captions burn |
dnxhd_type 36 |
dnxhd_type 45 |
dnxhd_type 60 |
dnxhd_type 75 |
dnxhd_type 90 |
dnxhd_type 90x |
dnxhd_type 110 |
dnxhd_type 115 |
dnxhd_type 120 |
dnxhd_type 145 |
dnxhd_type 175x |
dnxhd_type 175 |
dnxhd_type 185x |
dnxhd_type 185 |
dnxhd_type 220x |
dnxhd_type 220 |
h264_level 1 |
h264_level 1b |
h264_level 1.1 |
h264_level 1.2 |
h264_level 1.3 |
h264_level 2 |
h264_level 2.1 |
h264_level 2.2 |
h264_level 3 |
h264_level 3.1 |
h264_level 3.2 |
h264_level 4 |
h264_level 4.1 |
h264_level 4.2 |
h264_level 5 |
h264_level 5.1 |
h264_profile baseline |
h264_profile main |
h264_profile high |
h264_profile high10 |
h264_profile high422 |
h264_profile high444 |
h264_tune film |
h264_tune animation |
h264_tune grain |
h264_tune psnr |
h264_tune ssim |
h264_tune fastdecode |
h264_tune zerolatency |
playlist_type iframe |
playlist_type iframe-only |
telestream_block_size 16x16 |
telestream_block_size 24x24 |
telestream_block_size 32x32 |
tachyon_motion_amount xlow |
tachyon_motion_amount low |
tachyon_motion_amount medium |
tachyon_motion_amount high |
tachyon_motion_amount xhigh |
tachyon_motion_amount auto |
tachyon_fallback_size small |
tachyon_fallback_size medium |
tachyon_fallback_size large |
tachyon_fallback_size xlarge |
tachyon_fallback_size auto |
tachyon_mblock_size mb16 |
tachyon_mblock_size mb32 |
tachyon_mblock_size mb64 |
tachyon_mblock_size mb128 |
tachyon_mblock_size mb256 |
tachyon_mblock_size auto |
eac3_bitstream_mode m0 |
eac3_bitstream_mode m1 |
eac3_bitstream_mode m2 |
eac3_bitstream_mode m3 |
eac3_bitstream_mode m4 |
eac3_bitstream_mode m5 |
eac3_bitstream_mode m6 |
eac3_bitstream_mode m7 |
eac3_analog_to_digital_converter_type standard |
eac3_analog_to_digital_converter_type hdcd |
eac3_stereo_downmix_preference m0 |
eac3_stereo_downmix_preference m1 |
eac3_stereo_downmix_preference m2 |
eac3_stereo_downmix_preference m3 |
eac3_lt_rt_center_mix_level c0 |
eac3_lt_rt_center_mix_level c1 |
eac3_lt_rt_center_mix_level c2 |
eac3_lt_rt_center_mix_level c3 |
eac3_lt_rt_center_mix_level c4 |
eac3_lt_rt_center_mix_level c5 |
eac3_lt_rt_center_mix_level c6 |
eac3_lt_rt_center_mix_level c7 |
eac3_lt_rt_surround_mix_level c3 |
eac3_lt_rt_surround_mix_level c4 |
eac3_lt_rt_surround_mix_level c5 |
eac3_lt_rt_surround_mix_level c6 |
eac3_lt_rt_surround_mix_level c7 |
eac3_lo_ro_center_mix_level c0 |
eac3_lo_ro_center_mix_level c1 |
eac3_lo_ro_center_mix_level c2 |
eac3_lo_ro_center_mix_level c3 |
eac3_lo_ro_center_mix_level c4 |
eac3_lo_ro_center_mix_level c5 |
eac3_lo_ro_center_mix_level c6 |
eac3_lo_ro_center_mix_level c7 |
eac3_lo_ro_surround_mix_level c3 |
eac3_lo_ro_surround_mix_level c4 |
eac3_lo_ro_surround_mix_level c5 |
eac3_lo_ro_surround_mix_level c6 |
eac3_lo_ro_surround_mix_level c7 |
eac3_surround_ex_mode m0 |
eac3_surround_ex_mode m1 |
eac3_surround_ex_mode m2 |
eac3_drc_line_mode_profile p0 |
eac3_drc_line_mode_profile p1 |
eac3_drc_line_mode_profile p2 |
eac3_drc_line_mode_profile p3 |
eac3_drc_line_mode_profile p4 |
eac3_drc_line_mode_profile p5 |
eac3_drc_rf_mode_profile p0 |
eac3_drc_rf_mode_profile p1 |
eac3_drc_rf_mode_profile p2 |
eac3_drc_rf_mode_profile p3 |
eac3_drc_rf_mode_profile p4 |
eac3_drc_rf_mode_profile p5 |
eac3_room_type m0 |
eac3_room_type m1 |
eac3_room_type m2 |
Encoding
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
Properties
id string optional A unique identifier of an Encoding. |
audio_bitrate integer optional Audio bitrate (in bits/s). |
audio_channels integer optional A number of audio channels. |
audio_codec string optional A codec that is used to encode audio streams. |
audio_sample_rate integer optional A number of samples of audio carried per second. |
created_at string(datetime) optional A date and time when the Encoding has been created. |
duration integer optional none |
encoding_progress integer optional none |
encoding_time integer optional none |
error_class string optional A class of an error that has occurred during the encoding process. It is present only if the encoding status is equal to fail . |
error_message string optional A message that explains why the encoding process has resulted in an error. It is present only if the encoding status is equal to fail . |
external_id string optional none |
extname string optional Extension of the output file. |
file_size integer(int64) optional A size of the output file. |
files [string] optional An array of output file names. |
fps number optional Number of frames per second. |
height integer optional Height of the output video. |
width integer optional Width of the output video. |
logfile_url string optional An URL pointing to a logfile. |
mime_type string optional A mime type of the encoded file. |
parent_encoding_id string optional none |
path string optional none |
profile_id string optional An id of a related Profile. |
profile_name string optional A name of the used Profile. |
screenshots [string] optional none |
started_encoding_at string(datetime) optional A date and time when the encoding process has been started |
status string optional Determines at what stage the encoding process is at the moment. |
updated_at string(datetime) optional A date and time when a Encoding has been updated last time. |
video_bitrate integer optional video bitrate (in bits/s) |
video_codec string optional A codec that is used to encode video streams. |
video_id string optional An id of a related Video object |
Video
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
Properties
id string optional A unique identifier of the Video. |
audio_bitrate integer optional audio bitrate (in bits/s) |
audio_channels integer optional A number of audio channels. |
audio_codec string optional A codec that has been used to encode audio streams. |
audio_sample_rate integer optional A number of samples of audio carried per second. |
created_at string(datetime) optional A date and time when the Video has been created. |
duration integer optional A duration of the video in seconds. |
encodings_count integer optional A number of related Encoding objects. |
error_class string optional A class of an error that has occurred during the encoding process. It is present only if the encoding status is equal to fail . |
error_message string optional A message that explains why the encoding process has resulted in an error. It is present only if the encoding status is equal to fail . |
extname string optional Extension of the source file. |
file_size integer(int64) optional A size of the source file. |
fps number optional Number of frames per second. |
height integer optional Height of the output video. |
width integer optional Width of the output video. |
mime_type string optional A mime type of the source file. |
original_filename string optional A name of the source file. |
path string optional none |
payload string optional Payload is an arbitrary text of length 256 or shorter that you can store along the Video. It is typically used to retain an association with one of your own DB record ID. |
source_url string optional An URL pointing to the source file. |
status string optional Determines at what stage of importing process the Video is at the moment. |
updated_at string(datetime) optional A date and time when a Video has been updated last time. |
video_bitrate integer optional video bitrate (in bits/s) |
video_codec string optional A codec that has been used to encode the input file’s video streams. |
PaginatedVideoCollection
{
"videos": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 0,
"created_at": "string",
"duration": 0,
"encodings_count": 0,
"error_class": "string",
"error_message": "string",
"extname": "string",
"file_size": 0,
"fps": 0,
"height": 0,
"width": 0,
"mime_type": "string",
"original_filename": "string",
"path": "string",
"payload": "string",
"source_url": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Properties
videos [Video] optional none |
page integer optional A number of the fetched page. |
per_page integer optional A number of videos per page. |
total integer optional A number of all videos stored in the db. |
SignedVideoUrl
{
"signed_url": "string"
}
Properties
signed_url string optional An URL pointing to the Video file. It contains a valid authentication token. |
PaginatedEncodingsCollection
{
"encodings": [
{
"id": "string",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_codec": "string",
"audio_sample_rate": 44100,
"created_at": "string",
"duration": 0,
"encoding_progress": 0,
"encoding_time": 0,
"error_class": "string",
"error_message": "string",
"external_id": "string",
"extname": "string",
"file_size": 0,
"files": [
"string"
],
"fps": 0,
"height": 0,
"width": 0,
"logfile_url": "string",
"mime_type": "string",
"parent_encoding_id": "string",
"path": "string",
"profile_id": "string",
"profile_name": "string",
"screenshots": [
"string"
],
"started_encoding_at": "string",
"status": "string",
"updated_at": "string",
"video_bitrate": 0,
"video_codec": "string",
"video_id": "string"
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Properties
encodings [Encoding] required none |
page integer required A number of the fetched page. |
per_page integer required A number of encodings per page. |
total integer required A number of all encodings stored in the db. |
UploadSession
{
"type": "object",
"required": [
"id",
"location"
],
"properties": {
"id": {
"type": "string",
"description": "An unique identifier of the UploadSession."
},
"location": {
"type": "string",
"description": "An URL to which chunks of the uploaded file should be sent"
},
"parts": {
"type": "integer",
"description": "A number of chunks that are expected by the upstream."
},
"part_size": {
"type": "integer",
"description": "An expected size of uploaded chunks."
},
"max_connections": {
"type": "integer",
"description": "A maximum number of concurrent connections."
},
"extra_files": {
"type": "object",
"additionalProperties": null,
"description": "An object containing additional files uploaded using the session."
}
}
}
Properties
id string required An unique identifier of the UploadSession. |
location string required An URL to which chunks of the uploaded file should be sent |
parts integer optional A number of chunks that are expected by the upstream. |
part_size integer optional An expected size of uploaded chunks. |
max_connections integer optional A maximum number of concurrent connections. |
extra_files object optional An object containing additional files uploaded using the session. |
ExtraFile
{
"tag": "string",
"file_size": 0,
"file_name": "string"
}
Properties
tag string required none |
file_size integer(int64) required none |
file_name string required none |
DeletedResponse
{
"deleted": true
}
Properties
deleted boolean optional Informs whether an object has been deleted successfully. |
CountResponse
{
"total": 0
}
Properties
total integer optional Informs how many objects are stored in the database. |
RetriedResponse
{
"retried": true
}
Properties
retried boolean optional Informs whether an action has been retried successfully. |
CanceledResponse
{
"canceled": true
}
Properties
canceled boolean optional Informs whether an action has been canceled successfully. |
EncodingSignedUrls
{
"signed_urls": [
"string"
]
}
Properties
signed_urls [string] optional A list of signed URLs pointing to the encoding’s outputs. |
EncodingSignedUrl
{
"signed_url": "string"
}
Properties
signed_url string optional A signed URLs pointing to the encoding’s output. |
Error
{
"error": "string",
"message": "string"
}
Properties
error string optional Error type |
message string optional Explanation why the error has been raised. |
PaginatedProfilesCollection
{
"profiles": [
{
"advanced_fps_conversion": "telestream",
"aspect_mode": "string",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": 0,
"audio_codec": "string",
"audio_format": "pcm_s24le",
"audio_map": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_stream_id": 0,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"bumpers": {},
"byte_range_requests": true,
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"closed_captions": "add",
"color_metadata": true,
"created_at": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": 0,
"dash_profile": "string",
"deinterlace": "string",
"deinterlace_frames": "string",
"description": "string",
"dnxhd_type": 36,
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_count": 0,
"frame_interval": "1000f",
"frame_offsets": "2s, 10s, 250f, 400f",
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"id": "string",
"imx_type": "string",
"inputs": {},
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": "string",
"lang": "string",
"max_rate": 0,
"merge_audio_streams": "string",
"mute_audio_tracks": true,
"name": "string",
"outputs": {},
"outputs_path_format": "string",
"playlist_type": "iframe",
"pmt_pid": "string",
"preset_name": "string",
"prores_format": "string",
"segment_time": 0,
"stack": "string",
"starting_timecode": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": 0,
"telestream_cost_scaler": 0,
"telestream_search_length_scaler": 0,
"telestream_subpel_mode": true,
"time_code": "string",
"title": "string",
"trailers": {},
"transport_rate": "string",
"ts_pids": "string",
"updated_at": "string",
"upscale": true,
"use_editlist": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_bumpers": true,
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_trailers": true,
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "standard",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true
}
],
"page": 0,
"per_page": 0,
"total": 0
}
Properties
profiles [Profile] optional none |
page integer optional A number of the fetched page. |
per_page integer optional A number of profiles per page. |
total integer optional A number of all profiles stored in the db. |
ProfileBody
{
"preset_name": "aac",
"advanced_fps_conversion": "telestream",
"aspect_mode": "preserve",
"aspect_ratio": "16:9",
"audio_bitrate": 128,
"audio_channels": 0,
"audio_channels_layout": 1,
"audio_channels_per_track": "string",
"audio_codec": "string",
"audio_format": "string",
"audio_pid": "string",
"audio_profile": "string",
"audio_sample_rate": 44100,
"audio_streams": 0,
"avcintra_class": 50,
"buffer_size": 0,
"buffer_size_in_packets": "string",
"clip_length": "00:20:00",
"clip_offset": "00:00:10",
"clip_end": "00:00:06:00@25",
"pixel_format": "yuv420p",
"closed_captions": "add",
"dash_profile": "string",
"deinterlace": "keep_fps",
"deinterlace_frames": "string",
"dnxhd_type": "string",
"encryption": true,
"extname": ".mp4",
"fps": 29.97,
"frame_offsets": "2s, 10s, 250f, 400f",
"frame_interval": "1000f",
"frame_count": 0,
"h264_level": 1,
"h264_profile": "baseline",
"h264_tune": "film",
"height": 720,
"imx_type": "string",
"interlace": "string",
"keyframe_interval": 0,
"keyframe_rate": 0,
"max_rate": 0,
"merge_audio_streams": "string",
"name": "string",
"outputs_path_format": "string",
"pmt_pid": "string",
"prores_format": "string",
"segment_time": "string",
"size": "string",
"starting_timecode": "string",
"tar": true,
"transport_rate": "string",
"ts_pids": "string",
"upscale": true,
"variants": "string",
"video_bitrate": 3000,
"video_pid": "string",
"watermark_bottom": "string",
"watermark_height": "string",
"watermark_left": "string",
"watermark_right": "string",
"watermark_top": "string",
"watermark_url": "string",
"watermark_width": "string",
"width": 1080,
"x264_options": "string",
"x265_options": "string",
"xdcam_format": "string",
"mute_audio_tracks": true,
"byte_range_requests": "string",
"lang": "string",
"use_editlist": "string",
"audio_map": "string",
"audio_stream_id": "string",
"bumpers": {},
"codec_preset": "ultrafast",
"color_metadata": "string",
"crop_input_bottom": "string",
"crop_input_height": "string",
"crop_input_left": "string",
"crop_input_right": "string",
"crop_input_top": "string",
"crop_input_width": "string",
"dynamic_recipe": "string",
"playlist_type": "string",
"preset_version": "string",
"segment_delimiter": "string",
"sws_flags": "string",
"telestream_block_size": "16x16",
"telestream_blur_scaler": "string",
"telestream_cost_scaler": "string",
"telestream_search_length_scaler": "string",
"telestream_subpel_mode": "string",
"trailers": {},
"vantage_group_id": "string",
"watermark_bumpers": "string",
"watermark_trailers": "string",
"tachyon_allow_remove_pulldown": true,
"tachyon_enable_post_pulldown_filter": true,
"tachyon_media_hint_is_cartoon": true,
"tachyon_media_hint_has_chroma_noise": true,
"tachyon_more_sensitive_remove_pulldown": true,
"tachyon_allow_add_standard_pd": true,
"tachyon_allow_add_2_2pd": true,
"tachyon_allow_add_4_4pd": true,
"tachyon_allow_add_4_6pd": true,
"tachyon_allow_add_euro_pd": true,
"tachyon_allow_add_adaptive_pd": true,
"tachyon_motion_amount": "xlow",
"tachyon_fallback_size": "small",
"tachyon_mblock_size": "mb16",
"tachyon_cut_detection_sensitivity": 0,
"eac3_evolution_enable": true,
"eac3_bitstream_mode": "m0",
"eac3_ninety_degree_phase_shift": true,
"eac3_three_decibel_attenuation": true,
"eac3_enable_lfe_low_pass_filter": true,
"eac3_analog_to_digital_converter_type": "string",
"eac3_stereo_downmix_preference": "m0",
"eac3_lt_rt_center_mix_level": "c0",
"eac3_lt_rt_surround_mix_level": "c3",
"eac3_lo_ro_center_mix_level": "c0",
"eac3_lo_ro_surround_mix_level": "c3",
"eac3_surround_ex_mode": "m0",
"eac3_drc_line_mode_profile": "p0",
"eac3_drc_rf_mode_profile": "p0",
"eac3_dialog_normalization": 0,
"eac3_room_type": "m0",
"eac3_mixing_level": 0,
"eac3_copyright_protected": true,
"eac3_original_bitstream": true,
"title": "string",
"time_code": true
}
Properties
preset_name string required a name of a preset that a profile will use. |
advanced_fps_conversion string optional todo |
aspect_mode string optional Default is “letterbox”. |
aspect_ratio string optional Sets the desired display aspect ratio. By default it is not set. |
audio_bitrate integer optional audio bitrate (in bits/s) |
audio_channels integer optional Sets the number of audio channels. By default it is not set. |
audio_channels_layout string optional A channel layout specifies the spatial disposition of the channels in a multi-channel audio stream. |
audio_channels_per_track string optional Sets the number of audio channels per track. |
audio_codec string optional Audio codec that will be used by the profile. |
audio_format string optional Specifies an audio container. |
audio_pid string optional Packet identifier used by MPEG formats. |
audio_profile string optional Sets an audio profile. |
audio_sample_rate integer optional The number of samples of audio carried per second. |
audio_streams integer optional Sets the number of audio streams. |
avcintra_class string optional class of the AVC-Intra video coding. |
buffer_size integer optional Sets the buffer size, and can be 1-2 seconds for most gaming screencasts, and up to 5 seconds for more static content. You will have to experiment to see what looks best for your content. |
buffer_size_in_packets string optional todo |
clip_length string optional Sets the clip’s duration. |
clip_offset string optional Clip starts at a specific offset. |
clip_end string optional Clip ends at a specific time (timecode). |
pixel_format string optional none |
closed_captions string optional One of add (adds captions as a separate streams) or burn (burns captions on video stream using the first subtitle file). By default it is not set. |
dash_profile string optional none |
deinterlace string optional One of keep_fps or double_fps . By default it is not set. |
deinterlace_frames string optional none |
dnxhd_type string optional none |
encryption boolean optional none |
extname string optional File extension. |
fps number optional Null value copy the original fps. By default it is not set. |
frame_offsets string optional Array of offsets (Frames or seconds). |
frame_interval string optional Thumbnail interval (Frames or seconds). |
frame_count integer optional Evenly spaced number of generated screenshots. By default it is not set. |
h264_level string optional A specified set of constraints that indicate a degree of required decoder performance for a profile. |
h264_profile string optional Profiles represent a sub-set of the encoding techniques available in H.264. |
h264_tune string optional Use this option to change settings based upon the specifics of your input |
height integer optional Height in pixels. |
imx_type string optional none |
interlace string optional none |
keyframe_interval integer optional Adds a key frame every N frames. Default is 250, adds a key frame every 250 frames. |
keyframe_rate number optional todo |
max_rate integer optional Set max bitrate tolerance (in bits/s). By default this is not set |
merge_audio_streams string optional none |
name string optional Unique machine-readable name that will identify the profile. Helpful later on for filtering encodings by profile. |
outputs_path_format string optional Specify the directory where the output files should be stored. By default it is not set. More information about this here. |
pmt_pid string optional none |
prores_format string optional none |
segment_time string optional none |
size string optional none |
starting_timecode string optional none |
tar boolean optional none |
transport_rate string optional none |
ts_pids string optional none |
upscale boolean optional Upscale the video resolution to match your profile. Default is true . |
variants string optional Pattern utilised to match HLS.Variant presets by name. Default is hls.*. |
video_bitrate integer optional none |
video_pid string optional none |
watermark_bottom string optional Distance from the bottom of the video frame in pixels or percentage of video frame height. Works like CSS. Default is 0 . |
watermark_height string optional Height of the watermark image in pixels or percentage of video frame height. Default is no resizing |
watermark_left string optional Distance from the left of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0 . |
watermark_right string optional Distance from the right of the video frame in pixels or percentage of video frame width. Works like CSS. Default is 0 . |
watermark_top string optional Distance from the top of the video fram |