putRecordingTextTrack – Subir pista de texto
El endpoint putRecordingTextTrack te permite subir archivos de subtítulos o leyendas para una grabación. Los formatos compatibles son SRT, SSA/ASS y WebVTT. Todos los archivos subidos se convierten internamente a WebVTT. La respuesta se devuelve en formato JSON.
Este endpoint solo admite solicitudes POST. No se aceptan solicitudes GET.
Endpoint
POST https://api-guide.bbbserver.com/bigbluebutton/api/putRecordingTextTrack?<parameters>&checksum=replace-with-checksum El archivo de subtítulos debe enviarse como multipart/form-data en el cuerpo POST. La suma de verificación se calcula únicamente a partir de los parámetros de consulta de la URL; el cuerpo POST no se incluye en el cálculo de la suma de verificación.
Parámetros de URL (cadena de consulta)
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
recordID | String | Sí | — | Un único ID de grabación. A diferencia de otros endpoints, este parámetro no acepta una lista separada por comas; solo se permite un ID de grabación. |
kind | Enum | Sí | — | El tipo de pista de texto. Los valores aceptados son subtitles o captions. |
lang | String | Sí | — | Una etiqueta de idioma conforme con RFC 5646 (por ejemplo, de-DE, en-US). |
label | String | No | Detectado automáticamente a partir de lang | Un nombre para mostrar legible para la pista (p. ej. "German"). Si se omite, el nombre del idioma se deriva automáticamente del valor lang. |
Cuerpo de POST (multipart/form-data)
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
file | Binary | Sí | — | El archivo de subtítulos que se va a subir. Formatos compatibles: SRT (application/x-subrip), SSA/ASS y WebVTT (text/vtt). Si el archivo falta o está vacío, la API devuelve una respuesta FAILED. |
Ejemplo de solicitud
curl -X POST \
"https://api-guide.bbbserver.com/bigbluebutton/api/putRecordingTextTrack?recordID=replace-with-recording-id&kind=subtitles&lang=de-DE&label=Deutsch&checksum=replace-with-checksum" \
-F "file=@subtitles.srt;type=application/x-subrip" Respuesta de ejemplo
Una llamada correcta devuelve el siguiente JSON:
{
"response": {
"returncode": "SUCCESS",
"messageKey": "upload_text_track_success",
"message": "Text track uploaded successfully",
"recordId": "replace-with-recording-id"
}
} Respuestas de error
messageKey | Descripción |
|---|---|
paramError | Falta un parámetro obligatorio (checksum, recordID, kind o lang). Nota: la documentación oficial enumera esto incorrectamente como missingParameter. |
noRecordings | No se encontró el ID de grabación especificado. |
invalidKind | El valor de kind no es válido. Debe ser subtitles o captions. |
invalidLang | El formato de la etiqueta de idioma no es válido. Debe cumplir con RFC 5646. |
empty_uploaded_text_track | El archivo subido estaba vacío o no se incluyó ningún archivo en la solicitud. |
Comportamiento importante
El procesamiento de pistas de texto es asíncrono. Después de una subida exitosa, pueden pasar varios minutos antes de que la pista esté disponible en la reproducción de la grabación.
Si ya existe una pista con la misma kind e idioma, se sobrescribe con el nuevo archivo.
Subir un archivo vacío o enviar una solicitud sin archivo no elimina una pista existente. La API devuelve una respuesta FAILED en su lugar.
Todos los formatos de subtítulos subidos (SRT, SSA/ASS) se convierten automáticamente a WebVTT para la reproducción.
bbbserver.de Notas
Consejos
Usa el endpoint getRecordingTextTracks para verificar que la pista de texto subida ha sido procesada y está disponible para la reproducción antes de enlazarla en tu aplicación.
- WebVTT es el formato recomendado, ya que no requiere conversión y es compatible de forma nativa con los navegadores.
- Al subir varias pistas de idioma, usa etiquetas de idioma RFC 5646 distintas para evitar sobrescribir accidentalmente pistas existentes.
- Establece un parámetro
labeldescriptivo para ayudar a los espectadores a identificar la pista correcta en el selector de idioma de reproducción. - Recuerda que el checksum se calcula solo a partir de los parámetros de consulta de la URL; no incluyas el contenido del archivo en el checksum.