Video Split Endpoint¶
Pricing¶
35 credits per request
Fixed cost regardless of video length or number of splits.
1. Overview¶
The https://revidapi.com/v1/video/split endpoint is part of the Video API and is used to split a video file into multiple segments based on specified start and end times.
2. Endpoint¶
URL Path: https://revidapi.com/v1/video/split
HTTP Method: POST
3. Request¶
Headers¶
x-api-key(required): The API key for authentication.
Body Parameters¶
The request body must be a JSON object with the following properties:
video_url(required, string): The URL of the video file to be split.splits(required, array of objects): An array of objects specifying the start and end times for each split. Each object must have the following properties:start(required, string): The start time of the split in the formathh:mm:ss.ms.end(required, string): The end time of the split in the formathh:mm:ss.ms.video_codec(optional, string): The video codec to use for encoding the split videos. Default islibx264.video_preset(optional, string): The video preset to use for encoding the split videos. Default ismedium.video_crf(optional, number): The Constant Rate Factor (CRF) value for video encoding. Must be between 0 and 51. Default is 23.audio_codec(optional, string): The audio codec to use for encoding the split videos. Default isaac.audio_bitrate(optional, string): The audio bitrate to use for encoding the split videos. Default is128k.webhook_url(optional, string): The URL to receive a webhook notification when the split operation is complete.id(optional, string): A unique identifier for the request.
Example Request¶
{
"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://revidapi.com/v1/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. Response¶
Success Response¶
The success response follows the general response format specified in app.py. Here's an example:
{
"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"
}
The response field contains an array of objects, each representing a split video file. Each object has a file_url property containing the URL of the split video file.
Error Responses¶
- 400 Bad Request: Returned when the request payload is missing or invalid.
- 401 Unauthorized: Returned when the
x-api-keyheader is missing or invalid. - 429 Too Many Requests: Returned when the maximum queue length has been reached.
- 500 Internal Server Error: Returned when an unexpected error occurs during the video split process.
Example error response:
{
"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. Error Handling¶
The endpoint handles the following common errors:
- Missing or invalid request parameters: Returns a 400 Bad Request error with a descriptive error message.
- Authentication failure: Returns a 401 Unauthorized error if the
x-api-keyheader is missing or invalid. - Queue length exceeded: Returns a 429 Too Many Requests error if the maximum queue length has been reached.
- Unexpected exceptions: Returns a 500 Internal Server Error with the exception message.
The main application context (app.py) also includes error handling for queue length limits and webhook notifications.
6. Usage Notes¶
- The
video_urlparameter must be a valid URL pointing to a video file. - The
splitsarray must contain at least one object specifying the start and end times for a split. - The start and end times must be in the format
hh:mm:ss.ms(hours:minutes:seconds.milliseconds). - The
video_codec,video_preset,video_crf,audio_codec, andaudio_bitrateparameters are optional and can be used to customize the encoding settings for the split videos. - If the
webhook_urlparameter is provided, a webhook notification will be sent to the specified URL when the split operation is complete. - The
idparameter is optional and can be used to uniquely identify the request.
7. Common Issues¶
- Providing an invalid or inaccessible
video_url. - Specifying overlapping or invalid start and end times in the
splitsarray. - Exceeding the maximum queue length, which can result in a 429 Too Many Requests error.
8. Best Practices¶
- Validate the
video_urlparameter before sending the request to ensure it points to a valid video file. - Ensure that the start and end times in the
splitsarray are correctly formatted and do not overlap. - Consider using the
webhook_urlparameter to receive notifications about the completion of the split operation, especially for long-running or asynchronous requests. - Implement retry mechanisms and error handling in your client application to handle potential errors and failures.
- Monitor the queue length and adjust the
MAX_QUEUE_LENGTHenvironment variable as needed to prevent excessive queuing and potential timeouts.
8. Best Practices¶
- Validate the
video_urlparameter before sending the request to ensure it points to a valid video file. - Ensure that the start and end times in the
splitsarray are correctly formatted and do not overlap. - Consider using the
webhook_urlparameter to receive notifications about the completion of the split operation, especially for long-running or asynchronous requests. - Implement retry mechanisms and error handling in your client application to handle potential errors and failures.
- Monitor the queue length and adjust the
MAX_QUEUE_LENGTHenvironment variable as needed to prevent excessive queuing and potential timeouts.
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://revidapi.com/v1/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://revidapi.com/v1/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
}