Bỏ qua

Endpoint Ghép nối video

Giá cả

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

Chi phí cố định bất kể số lượng video hay tổng độ dài.

1. Tổng quan

Endpoint https://api.revidapi.com/paid/video/concatenate là một phần của Video API và chịu trách nhiệm kết hợp nhiều tệp video thành một tệp video duy nhất.

2. Endpoint

URL Path: https://api.revidapi.com/paid/video/concatenate 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_urls (bắt buộc, mảng các đối tượng): Mảng các URL video cần ghép nối. Mỗi đối tượng trong mảng phải có thuộc tính video_url (string, định dạng URI) chứa URL của tệp video.
  • webhook_url (tùy chọn, string, định dạng URI): URL nơi phản hồi sẽ được gửi dưới dạng webhook.
  • id (tùy chọn, string): Mã định danh cho yêu cầu.

Decorator validate_payload trong tệp routes áp dụng schema JSON sau cho body yêu cầu:

{
    "type": "object",
    "properties": {
        "video_urls": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "video_url": {"type": "string", "format": "uri"}
                },
                "required": ["video_url"]
            },
            "minItems": 1
        },
        "webhook_url": {"type": "string", "format": "uri"},
        "id": {"type": "string"}
    },
    "required": ["video_urls"],
    "additionalProperties": False
}

Ví dụ yêu cầu

{
    "video_urls": [
        {"video_url": "https://example.com/video1.mp4"},
        {"video_url": "https://example.com/video2.mp4"},
        {"video_url": "https://example.com/video3.mp4"}
    ],
    "webhook_url": "https://example.com/webhook",
    "id": "request-123"
}
curl -X POST \
     -H "x-api-key: YOUR_API_KEY" \
     -H "Content-Type: application/json" \
     -d '{
        "video_urls": [
            {"video_url": "https://example.com/video1.mp4"},
            {"video_url": "https://example.com/video2.mp4"},
            {"video_url": "https://example.com/video3.mp4"}
        ],
        "webhook_url": "https://example.com/webhook",
        "id": "request-123"
     }' \
     https://api.revidapi.com/paid/video/concatenate

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 định nghĩa trong tệp app.py. Đây là ví dụ:

{
    "endpoint": "/v1/video/concatenate",
    "code": 200,
    "id": "request-123",
    "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
    "response": "https://cloud-storage.example.com/combined-video.mp4",
    "message": "success",
    "pid": 12345,
    "queue_id": 6789,
    "run_time": 10.234,
    "queue_time": 2.345,
    "total_time": 12.579,
    "queue_length": 0,
    "build_number": "1.0.0"
}

Trường response chứa URL của tệp video đã ghép nối được tải lên cloud storage.

Phản hồi lỗi

  • 400 Bad Request: Được trả về khi body yêu cầu bị thiếu hoặc không hợp lệ.
{
  "code": 400,
  "message": "Invalid request payload"
}
  • 401 Unauthorized: Được trả về khi header x-api-key bị thiếu hoặc không hợp lệ.
{
  "code": 401,
  "message": "Unauthorized"
}
  • 429 Too Many Requests: Được trả về khi đạt đến độ dài hàng đợi tối đa.
{
  "code": 429,
  "id": "request-123",
  "job_id": "a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6",
  "message": "MAX_QUEUE_LENGTH (100) reached",
  "pid": 12345,
  "queue_id": 6789,
  "queue_length": 100,
  "build_number": "1.0.0"
}
  • 500 Internal Server Error: Được trả về khi có lỗi không mong muốn xảy ra trong quá trình ghép nối video.
{
  "code": 500,
  "message": "An error occurred during video concatenation"
}

5. Xử lý lỗi

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

  • Thiếu hoặc body yêu cầu không hợp lệ: Nếu body yêu cầu bị thiếu hoặc không tuân theo schema JSON mong đợi, lỗi 400 Bad Request được trả về.
  • Thiếu hoặc API key không hợp lệ: Nếu header x-api-key bị thiếu hoặc không hợp lệ, lỗi 401 Unauthorized được trả về.
  • Vượt quá độ dài hàng đợi: Nếu đạt đến độ dài hàng đợi tối đa (được xác định bởi biến môi trường MAX_QUEUE_LENGTH), lỗi 429 Too Many Requests được trả về.
  • Lỗi không mong muốn trong quá trình ghép nối video: Nếu có lỗi không mong muốn xảy ra trong quá trình ghép nối video, lỗi 500 Internal Server Error được trả về với thông báo lỗi.

Ngữ cảnh ứng dụng chính (app.py) cũng bao gồm xử lý lỗi cho hàng đợi tác vụ. Nếu độ dài hàng đợi vượt quá giới hạn MAX_QUEUE_LENGTH, yêu cầu bị từ chối với lỗi 429 Too Many Requests.

6. Ghi chú sử dụng

  • Các tệp video cần ghép nối phải có thể truy cập qua các URL đã cung cấp.
  • Thứ tự của các tệp video trong mảng video_urls xác định thứ tự chúng sẽ được ghép nối.
  • Nếu tham số webhook_url được cung cấp, phản hồi sẽ được gửi dưới dạng webhook đến URL đã chỉ định.
  • Tham số id có thể được sử dụng để xác định yêu cầu trong phản hồi.

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

  • Cung cấp URL video không hợp lệ hoặc không thể truy cập.
  • Vượt quá độ dài hàng đợi tối đa, điều này có thể dẫn đến các yêu cầu bị từ chối với lỗi 429 Too Many Requests.
  • Gặp phải lỗi không mong muốn trong quá trình ghép nối video, điều này có thể dẫn đến lỗi 500 Internal Server Error.

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

  • Xác thực URL video trước khi gửi yêu cầu để đảm bảo chúng có thể truy cập và ở định dạng đúng.
  • Giám sát độ dài hàng đợi và điều chỉnh giá trị MAX_QUEUE_LENGTH tương ứng để tránh các yêu cầu bị từ chối do hàng đợi đầy.
  • Triển khai cơ chế thử lại để xử lý các lỗi tạm thời hoặc thất bại trong quá trình ghép nối video.
  • Cung cấp các giá trị id có ý nghĩa và mô tả để dễ dàng xác định yêu cầu trong phản hồi.

Giá cả

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

Chi phí cố định bất kể số lượng video hay tổng độ dài.


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
}