Passer au contenu principal
POST
/
transcode
TypeScript
import { Livepeer } from "livepeer";
import {
  TranscodePayloadSchemasStorageType,
  TranscodeProfileEncoder,
  TranscodeProfileProfile,
} from "livepeer/models/components";

const livepeer = new Livepeer({
  apiKey: "<YOUR_BEARER_TOKEN_HERE>",
});

async function run() {
  const result = await livepeer.transcode.create({
    input: {
      url: "https://s3.amazonaws.com/bucket/file.mp4",
    },
    storage: {
      type: TranscodePayloadSchemasStorageType.Web3Storage,
      credentials: {
        proof: "EaJlcm9vdHOAZ3ZlcnNpb24BmgIBcRIg2uxHpcPYSWNtifMKFkPC7IEDvFDCxCd3ADViv0coV7SnYXNYRO2hA0AnblHEW38s3lSlcwaDjPn",
      },
    },
    outputs: {
      hls: {
        path: "/samplevideo/hls",
      },
      mp4: {
        path: "/samplevideo/mp4",
      },
      fmp4: {
        path: "/samplevideo/fmp4",
      },
    },
    profiles: [
      {
        width: 1280,
        name: "720p",
        height: 720,
        bitrate: 3000000,
        quality: 23,
        fps: 30,
        fpsDen: 1,
        gop: "2",
        profile: TranscodeProfileProfile.H264Baseline,
        encoder: TranscodeProfileEncoder.H264,
      },
    ],
  });

  // Handle the result
  console.log(result);
}

run();
{
  "id": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
  "type": "upload",
  "createdAt": 1587667174725,
  "scheduledAt": 1587667174725,
  "inputAssetId": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
  "outputAssetId": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
  "projectId": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
  "requesterId": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
  "params": {
    "upload": {
      "url": "https://cdn.livepeer.com/ABC123/filename.mp4",
      "encryption": "<unknown>",
      "c2pa": true,
      "profiles": [
        {
          "bitrate": 3000000,
          "width": 1280,
          "name": "720p",
          "height": 720,
          "quality": 23,
          "fps": 30,
          "fpsDen": 1,
          "gop": 2,
          "profile": "H264Baseline",
          "encoder": "H.264"
        }
      ],
      "targetSegmentSizeSecs": 6
    },
    "export": {
      "custom": {
        "url": "https://s3.amazonaws.com/my-bucket/path/filename.mp4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LLMMB",
        "method": "POST",
        "headers": {}
      }
    },
    "exportData": {
      "content": {
        "data": "Hello, World!"
      },
      "ipfs": {
        "pinata": {}
      },
      "type": "text/plain",
      "id": "09F8B46C-61A0-4254-9875-F71F4C605BC7"
    },
    "transcode-file": {
      "input": {
        "url": "https://cdn.livepeer.com/ABC123/filename.mp4"
      },
      "storage": {
        "url": "s3+https://accessKeyId:secretAccessKey@s3Endpoint/bucket"
      },
      "outputs": {
        "hls": {
          "path": "/samplevideo/hls"
        },
        "mp4": {
          "path": "/samplevideo/mp4"
        }
      },
      "profiles": [
        {
          "bitrate": 3000000,
          "width": 1280,
          "name": "720p",
          "height": 720,
          "quality": 23,
          "fps": 30,
          "fpsDen": 1,
          "gop": 2,
          "profile": "H264Baseline",
          "encoder": "H.264"
        }
      ],
      "targetSegmentSizeSecs": 10,
      "creatorId": {
        "type": "unverified",
        "value": "<string>"
      },
      "c2pa": false
    },
    "clip": {
      "url": "https://asset-cdn.lp-playback.monster/hls/1bde4o2i6xycudoy/static360p0.mp4",
      "clipStrategy": {
        "startTime": "<unknown>",
        "endTime": "<unknown>",
        "playbackId": "<unknown>"
      },
      "catalystPipelineStrategy": "catalyst_ffmpeg",
      "sessionId": "d32ae9e6-c459-4931-9898-e86e2f5e7e16",
      "inputId": "09F8B46C-61A0-4254-9875-F71F4C605BC7"
    }
  },
  "status": {
    "phase": "pending",
    "updatedAt": 1587667174725,
    "progress": 0.5,
    "errorMessage": "Failed to upload file",
    "retries": 3
  },
  "output": {
    "upload": {
      "assetSpec": {
        "id": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
        "source": {
          "type": "url",
          "url": "<string>",
          "gatewayUrl": "<string>",
          "encryption": "<unknown>"
        },
        "name": "filename.mp4",
        "type": "video",
        "playbackId": "eaw4nk06ts2d0mzb",
        "userId": "66E2161C-7670-4D05-B71D-DA2D6979556F",
        "playbackUrl": "https://livepeercdn.com/asset/ea03f37e-f861-4cdd-b495-0e60b6d753ad/index.m3u8",
        "downloadUrl": "https://livepeercdn.com/asset/eaw4nk06ts2d0mzb/video/download.mp4",
        "playbackPolicy": {
          "type": "webhook",
          "webhookId": "1bde4o2i6xycudoy",
          "webhookContext": {
            "streamerId": "my-custom-id"
          },
          "refreshInterval": 600,
          "allowedOrigins": [
            "<string>"
          ]
        },
        "creatorId": {
          "type": "unverified",
          "value": "user123"
        },
        "profiles": [
          {
            "bitrate": 3000000,
            "width": 1280,
            "name": "720p",
            "height": 720,
            "quality": 23,
            "fps": 30,
            "fpsDen": 1,
            "gop": 2,
            "profile": "H264Baseline",
            "encoder": "H.264"
          }
        ],
        "storage": {
          "ipfs": {
            "spec": {},
            "nftMetadata": {
              "cid": "<string>",
              "url": "<string>",
              "gatewayUrl": "<string>"
            },
            "updatedAt": 1587667174725
          },
          "status": {
            "phase": "ready",
            "tasks": {
              "pending": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
              "last": "09F8B46C-61A0-4254-9875-F71F4C605BC7",
              "failed": "09F8B46C-61A0-4254-9875-F71F4C605BC7"
            },
            "progress": 0.5,
            "errorMessage": "Failed to update storage"
          }
        },
        "status": {
          "phase": "uploading",
          "updatedAt": 1587667174725,
          "progress": 123,
          "errorMessage": "<string>"
        },
        "projectId": "aac12556-4d65-4d34-9fb6-d1f0985eb0a9",
        "createdAt": 1587667174725,
        "createdByTokenName": "<string>",
        "size": 84934509,
        "hash": [
          {
            "hash": "9b560b28b85378a5004117539196ab24e21bbd75b0e9eb1a8bc7c5fd80dc5b57",
            "algorithm": "sha256"
          }
        ],
        "videoSpec": {
          "format": "mp4",
          "duration": 23.8328,
          "bitrate": 1000000,
          "tracks": [
            {
              "type": "video",
              "codec": "aac",
              "startTime": 23.8238,
              "duration": 23.8238,
              "bitrate": 1000000,
              "width": 1920,
              "height": 1080,
              "pixelFormat": "yuv420p",
              "fps": 30,
              "channels": 2,
              "sampleRate": 44100,
              "bitDepth": 16
            }
          ]
        }
      }
    },
    "export": {
      "ipfs": {
        "videoFileCid": "Qmabc123xyz341",
        "videoFileUrl": "ipfs://Qmabc123xyz341",
        "videoFileGatewayUrl": "https://gateway.ipfs.io/ipfs/Qmabc123xyz341",
        "nftMetadataCid": "Qmabc123xyz341",
        "nftMetadataUrl": "ipfs://Qmabc123xyz341",
        "nftMetadataGatewayUrl": "https://gateway.ipfs.io/ipfs/Qmabc123xyz341"
      }
    },
    "exportData": {
      "ipfs": {
        "cid": "Qmabc123xyz341"
      }
    }
  }
}

Créer une tâche de transcodage

Autorisations

Authorization
string
header
requis

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Corps

application/json
input
object
requis

URL input video

storage
object
requis

Storage for the output files

outputs
object
requis

Output formats

profiles
object[]
targetSegmentSizeSecs
number

How many seconds the duration of each output segment should be

creatorId
c2pa
boolean

Decides if the output video should include C2PA signature

Réponse

Success

id
string

Task ID

Exemple:

"09F8B46C-61A0-4254-9875-F71F4C605BC7"

type
enum<string>

Type of the task

Options disponibles:
upload,
export,
export-data,
transcode-file,
clip
Exemple:

"upload"

createdAt
number

Timestamp (in milliseconds) at which task was created

Exemple:

1587667174725

scheduledAt
number

Timestamp (in milliseconds) at which the task was scheduled for execution (e.g. after file upload finished).

Exemple:

1587667174725

inputAssetId
string

ID of the input asset

Exemple:

"09F8B46C-61A0-4254-9875-F71F4C605BC7"

outputAssetId
string

ID of the output asset

Exemple:

"09F8B46C-61A0-4254-9875-F71F4C605BC7"

projectId
string

ID of the project

Exemple:

"09F8B46C-61A0-4254-9875-F71F4C605BC7"

requesterId
string

ID of the requester hash(IP + SALT + PlaybackId)

Exemple:

"09F8B46C-61A0-4254-9875-F71F4C605BC7"

params
object

Parameters of the task

status
object

Status of the task

output
object

Output of the task

Last modified on March 1, 2026