backend: Add new endpoint to retrieve recording content and remove streaming endpoint

This commit is contained in:
Carlos Santos 2025-04-07 18:29:30 +02:00
parent bb54cd6c8e
commit 713f99acf7
4 changed files with 82 additions and 80 deletions

View File

@ -17,6 +17,8 @@ paths:
$ref: './paths/recordings.yaml#/~1recordings'
/recordings/{recordingId}:
$ref: './paths/recordings.yaml#/~1recordings~1{recordingId}'
/recordings/{recordingId}/content:
$ref: './paths/recordings.yaml#/~1recordings~1{recordingId}~1content'
components:
securitySchemes:
$ref: './components/security.yaml'

View File

@ -20,8 +20,6 @@ paths:
$ref: './paths/internal/rooms.yaml#/~1rooms~1{roomId}'
/rooms/{roomId}/participant-role:
$ref: './paths/internal/rooms.yaml#/~1rooms~1{roomId}~1participant-role'
/recordings/{recordingId}/stream:
$ref: './paths/internal/recordings.yaml#/~1recordings~1{recordingId}~1stream'
/participants/token:
$ref: './paths/internal/participants.yaml#/~1participants~1token'
/participants/token/refresh:

View File

@ -1,78 +0,0 @@
/recordings/{recordingId}/stream:
get:
operationId: getRecordingStream
summary: Stream an OpenVidu Meet recording
description: >
Streams the OpenVidu Meet recording with the specified recording ID.
This endpoint supports range requests, allowing partial content retrieval
for video playback without downloading the entire file.
tags:
- Internal API - Recordings
security:
- accessTokenCookie: []
parameters:
- $ref: '../../components/parameters/recording-id.yaml'
- $ref: '../../components/parameters/recording-range.yaml'
responses:
'200':
description: Successfully streaming the full recording
headers:
Accept-Ranges:
description: Indicates that byte-range requests are supported
schema:
type: string
Content-Length:
description: The total file size in bytes
schema:
type: integer
content:
video/mp4:
schema:
type: string
format: binary
'206':
description: Partial content streaming based on byte range
headers:
Accept-Ranges:
description: Indicates that byte-range requests are supported
schema:
type: string
Content-Range:
description: Specifies the range of bytes being sent
schema:
type: string
Content-Length:
description: The length of the partial content in bytes
schema:
type: integer
content:
video/mp4:
schema:
type: string
format: binary
'400':
description: Bad Request — Invalid range header format
content:
application/json:
schema:
$ref: '../../components/schemas/error.yaml'
example:
code: 400
message: 'Invalid Range header'
'401':
$ref: '../../components/responses/unauthorized-error.yaml'
'403':
$ref: '../../components/responses/forbidden-error.yaml'
'404':
$ref: '../../components/responses/error-room-not-found.yaml'
'416':
description: Requested range not satisfiable
content:
application/json:
schema:
$ref: '../../components/schemas/error.yaml'
example:
code: 416
message: 'Requested range not satisfiable'
'500':
$ref: '../../components/responses/internal-server-error.yaml'

View File

@ -178,3 +178,83 @@
$ref: '../components/responses/error-recording-in-progress.yaml'
'500':
$ref: '../components/responses/internal-server-error.yaml'
/recordings/{recordingId}/content:
get:
operationId: getRecordingContent
summary: Get recording content
description: >
Retrieves the content of a recording with the specified recording ID.
The content is returned in a binary format suitable for video playback.
This endpoint supports range requests, allowing partial content retrieval
for video playback without downloading the entire file.
tags:
- OpenVidu Meet - Recordings
security:
- apiKeyInHeader: []
- accessTokenCookie: []
parameters:
- $ref: '../components/parameters/recording-id.yaml'
- $ref: '../components/parameters/recording-range.yaml'
responses:
'200':
description: Successfully streaming the full recording
headers:
Accept-Ranges:
description: Indicates that byte-range requests are supported
schema:
type: string
Content-Length:
description: The total file size in bytes
schema:
type: integer
content:
video/mp4:
schema:
type: string
format: binary
'206':
description: Partial content streaming based on byte range
headers:
Accept-Ranges:
description: Indicates that byte-range requests are supported
schema:
type: string
Content-Range:
description: Specifies the range of bytes being sent
schema:
type: string
Content-Length:
description: The length of the partial content in bytes
schema:
type: integer
content:
video/mp4:
schema:
type: string
format: binary
'400':
description: Bad Request — Invalid range header format
content:
application/json:
schema:
$ref: '../components/schemas/error.yaml'
example:
code: 400
message: 'Invalid Range header'
'401':
$ref: '../components/responses/unauthorized-error.yaml'
'403':
$ref: '../components/responses/forbidden-error.yaml'
'404':
$ref: '../components/responses/error-room-not-found.yaml'
'416':
description: Requested range not satisfiable
content:
application/json:
schema:
$ref: '../components/schemas/error.yaml'
example:
code: 416
message: 'Requested range not satisfiable'
'500':
$ref: '../components/responses/internal-server-error.yaml'