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ínhvideo_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-keybị 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-keybị 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_urlsxá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ố
idcó 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_LENGTHtươ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ị
idcó ý 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
}