Bỏ qua

Endpoint Chia tách video

Giá cả

35 credits cho mỗi yêu cầu

Chi phí cố định bất kể độ dài video hay số lượng đoạn chia tách.

1. Tổng quan

Endpoint https://api.revidapi.com/paid/video/split là một phần của Video API và được sử dụng để chia tách một tệp video thành nhiều đoạn dựa trên thời gian bắt đầu và kết thúc được chỉ định.

2. Endpoint

URL Path: https://api.revidapi.com/paid/video/split HTTP Method: POST

3. Yêu cầu

Headers

  • x-api-key (bắt buộc): API key để xác thực.

Tham số Body

Body yêu cầu phải là đối tượng JSON với các thuộc tính sau:

  • video_url (bắt buộc, string): URL của tệp video cần chia tách.
  • splits (bắt buộc, mảng các đối tượng): Mảng các đối tượng chỉ định thời gian bắt đầu và kết thúc cho mỗi đoạn chia tách. Mỗi đối tượng phải có các thuộc tính sau:
  • start (bắt buộc, string): Thời gian bắt đầu của đoạn chia tách theo định dạng hh:mm:ss.ms.
  • end (bắt buộc, string): Thời gian kết thúc của đoạn chia tách theo định dạng hh:mm:ss.ms.
  • video_codec (tùy chọn, string): Codec video để sử dụng cho việc mã hóa các video đã chia tách. Mặc định là libx264.
  • video_preset (tùy chọn, string): Preset video để sử dụng cho việc mã hóa các video đã chia tách. Mặc định là medium.
  • video_crf (tùy chọn, number): Giá trị Constant Rate Factor (CRF) cho mã hóa video. Phải nằm trong khoảng từ 0 đến 51. Mặc định là 23.
  • audio_codec (tùy chọn, string): Codec âm thanh để sử dụng cho việc mã hóa các video đã chia tách. Mặc định là aac.
  • audio_bitrate (tùy chọn, string): Bitrate âm thanh để sử dụng cho việc mã hóa các video đã chia tách. Mặc định là 128k.
  • webhook_url (tùy chọn, string): URL để nhận thông báo webhook khi thao tác chia tách hoàn tất.
  • id (tùy chọn, string): Mã định danh duy nhất cho yêu cầu.

Ví dụ yêu cầu

{
  "video_url": "https://example.com/video.mp4",
  "splits": [
    {
      "start": "00:00:10.000",
      "end": "00:00:20.000"
    },
    {
      "start": "00:00:30.000",
      "end": "00:00:40.000"
    }
  ],
  "video_codec": "libx264",
  "video_preset": "medium",
  "video_crf": 23,
  "audio_codec": "aac",
  "audio_bitrate": "128k",
  "webhook_url": "https://example.com/webhook",
  "id": "unique-request-id"
}
curl -X POST \
  https://api.revidapi.com/paid/video/split \
  -H 'x-api-key: YOUR_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "video_url": "https://example.com/video.mp4",
    "splits": [
      {
        "start": "00:00:10.000",
        "end": "00:00:20.000"
      },
      {
        "start": "00:00:30.000",
        "end": "00:00:40.000"
      }
    ],
    "video_codec": "libx264",
    "video_preset": "medium",
    "video_crf": 23,
    "audio_codec": "aac",
    "audio_bitrate": "128k",
    "webhook_url": "https://example.com/webhook",
    "id": "unique-request-id"
  }'

4. Phản hồi

Phản hồi thành công

Phản hồi thành công tuân theo định dạng phản hồi chung được chỉ định trong app.py. Đây là ví dụ:

{
  "endpoint": "/v1/video/split",
  "code": 200,
  "id": "unique-request-id",
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
  "response": [
    {
      "file_url": "https://example.com/split-1.mp4"
    },
    {
      "file_url": "https://example.com/split-2.mp4"
    }
  ],
  "message": "success",
  "pid": 12345,
  "queue_id": 6789,
  "run_time": 5.234,
  "queue_time": 0.123,
  "total_time": 5.357,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Trường response chứa mảng các đối tượng, mỗi đối tượng đại diện cho một tệp video đã chia tách. Mỗi đối tượng có thuộc tính file_url chứa URL của tệp video đã chia tách.

Phản hồi lỗi

  • 400 Bad Request: Được trả về khi payload yêu cầu bị thiếu hoặc không hợp lệ.
  • 401 Unauthorized: Được trả về khi header x-api-key bị thiếu hoặc không hợp lệ.
  • 429 Too Many Requests: Được trả về khi đạt đến độ dài hàng đợi tối đa.
  • 500 Internal Server Error: Được trả về khi có lỗi không mong muốn xảy ra trong quá trình chia tách video.

Ví dụ phản hồi lỗi:

{
  "code": 400,
  "id": "unique-request-id",
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
  "message": "Invalid request payload: 'splits' is a required property",
  "pid": 12345,
  "queue_id": 6789,
  "queue_length": 2,
  "build_number": "1.0.0"
}

5. Xử lý lỗi

Endpoint xử lý các lỗi phổ biến sau:

  • Thiếu hoặc tham số yêu cầu không hợp lệ: Trả về lỗi 400 Bad Request với thông báo lỗi mô tả.
  • Lỗi xác thực: Trả về lỗi 401 Unauthorized nếu header x-api-key bị thiếu hoặc không hợp lệ.
  • Vượt quá độ dài hàng đợi: Trả về lỗi 429 Too Many Requests nếu đạt đến độ dài hàng đợi tối đa.
  • Ngoại lệ không mong muốn: Trả về lỗi 500 Internal Server Error với thông báo ngoại lệ.

Ngữ cảnh ứng dụng chính (app.py) cũng bao gồm xử lý lỗi cho giới hạn độ dài hàng đợi và thông báo webhook.

6. Ghi chú sử dụng

  • Tham số video_url phải là URL hợp lệ trỏ đến tệp video.
  • Mảng splits phải chứa ít nhất một đối tượng chỉ định thời gian bắt đầu và kết thúc cho một đoạn chia tách.
  • Thời gian bắt đầu và kết thúc phải ở định dạng hh:mm:ss.ms (giờ:phút:giây.mili giây).
  • Các tham số video_codec, video_preset, video_crf, audio_codec, và audio_bitrate là tùy chọn và có thể được sử dụng để tùy chỉnh cài đặt mã hóa cho các video đã chia tách.
  • Nếu tham số webhook_url được cung cấp, thông báo webhook sẽ được gửi đến URL đã chỉ định khi thao tác chia tách hoàn tất.
  • Tham số id là tùy chọn và có thể được sử dụng để xác định duy nhất yêu cầu.

7. Vấn đề thường gặp

  • Cung cấp video_url không hợp lệ hoặc không thể truy cập.
  • Chỉ định thời gian bắt đầu và kết thúc trùng lặp hoặc không hợp lệ trong mảng splits.
  • Vượt quá độ dài hàng đợi tối đa, điều này có thể dẫn đến lỗi 429 Too Many Requests.

8. Thực hành tốt nhất

  • Xác thực tham số video_url trước khi gửi yêu cầu để đảm bảo nó trỏ đến tệp video hợp lệ.
  • Đảm bảo thời gian bắt đầu và kết thúc trong mảng splits được định dạng đúng và không trùng lặp.
  • Cân nhắc sử dụng tham số webhook_url để nhận thông báo về việc hoàn tất thao tác chia tách, đặc biệt cho các yêu cầu chạy lâu hoặc không đồng bộ.
  • Triển khai cơ chế thử lại và xử lý lỗi trong ứng dụng máy khách của bạn để xử lý các lỗi và thất bại tiềm ẩn.
  • Giám sát độ dài hàng đợi và điều chỉnh biến môi trường MAX_QUEUE_LENGTH khi cần để tránh xếp hàng quá mức và timeout tiềm ẩn.

Giá cả

35 credits cho mỗi yêu cầu

Chi phí cố định bất kể độ dài video hay số lượng đoạn chia tách.


Kiểm tra Trạng thái Công việc

Sau khi gửi một công việc, bạn có thể kiểm tra trạng thái của nó bằng cách sử dụng job_id được trả về trong phản hồi.

Endpoint

URL Path: https://api.revidapi.com/paid/get/job/status
HTTP Method: POST

Yêu cầu

Headers

  • x-api-key (bắt buộc): API key để xác thực.
  • Content-Type: application/json

Tham số Body

{
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}

Ví dụ Yêu cầu

curl -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"}' \
  https://api.revidapi.com/paid/get/job/status

Phản hồi

Phản hồi Thành công

{
  "endpoint": "/v1/toolkit/job/status",
  "code": 200,
  "id": null,
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
  "response": {
    "job_status": "done",
    "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
    "queue_id": 140368864456064,
    "process_id": 123456,
    "response": {
      "endpoint": "/v1/endpoint/name",
      "code": 200,
      "id": "request-123",
      "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
      "response": "https://cloud-storage.example.com/output.mp4",
      "message": "success",
      "pid": 123456,
      "queue_id": 140368864456064,
      "run_time": 2.345,
      "queue_time": 0.123,
      "total_time": 2.468,
      "queue_length": 0,
      "build_number": "1.0.0"
    }
  },
  "message": "success",
  "pid": 123456,
  "queue_id": 140368864456064,
  "run_time": 0.001,
  "queue_time": 0.0,
  "total_time": 0.001,
  "queue_length": 0,
  "build_number": "1.0.0"
}

Phản hồi Lỗi

  • 404 Not Found: Nếu không tìm thấy công việc với job_id được cung cấp:
{
  "error": "Job not found",
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6"
}
  • 500 Internal Server Error: Nếu xảy ra lỗi không mong muốn:
{
  "error": "Failed to retrieve job status: <error_message>",
  "code": 500
}