Añadir subtítulos VTT en Dynamic Media de AEMaaCS mediante programación
Adobe Experience Manager as a Cloud Service (AEMaaCS) no ofrece una API pública para cargar mediante programación archivos de subtítulos VTT en Dynamic Media. Para resolver esto, cargue el recurso de vídeo, cree una carpeta de subrecursos, cargue archivos VTT y publique metadatos mediante extremos internos como S7AudioCaptionsMetadataServlet.
Descripción description
Entorno
Adobe Experience Manager as a Cloud Service (AEMaaCS): Assets, Dynamic Media
Problema/Síntomas
AEMaaCS no proporciona una API pública para cargar y asociar mediante programación archivos de subtítulos VTT con recursos de vídeo en Dynamic Media. Los subtítulos deben cargarse manualmente a través de la interfaz de usuario, lo que evita la automatización de la administración de subtítulos para los recursos de vídeo.
Resolución resolution
Los siguientes pasos proporcionan información general sobre cómo cargar mediante programación y asociar archivos de subtítulos VTT con recursos de vídeo mediante métodos de implementación interna:
-
Cargue el archivo de vídeo principal en AEMaaCS DAM (Digital Asset Management) y confirme que se procesa correctamente. Ruta de ejemplo:
/content/dam/test/sample.mp4. -
Compruebe si la carpeta
subassetsexiste en el recurso de vídeo enviando una solicitud de GET a/content/dam/test/sample.mp4/subassets.json.Si devuelve un error 404, cree la carpeta con una petición POST con
jcr:primaryType=nt:folder.Por ejemplo:
code language-none curl -u admin:admin \ -F "jcr:primaryType=nt:folder" \ http://localhost:4502/content/dam/test/sample.mp4/subassets\ -
Cargue archivos de audio como
audio1.mp3y archivos de subtítulos comoenglish.vtten la carpetasubassets.Por ejemplo:
Rótulo:
/content/dam/test/sample.mp4/subassets/chinese.vttAudio:
/content/dam/test/sample.mp4/subassets/audio1.mp3Puede usar la biblioteca
aem-uploadpara cargar: https://github.com/adobe/aem-upload. -
PUBLICAR metadatos de cada archivo de audio usando
S7AudioCaptionsMetadataServlet:code language-none curl -u user:password \ -H "Content-Type: application/json" \ -d '{ "payload": [ { "filename": "chinese.vtt", "language": "Chinese", "languageCode": "zho", "role": "subtitle", "label": "ch-subtitle", "isDefault": false }] }' \ http://localhost:4502/content/dam/test/sample.mp4.audiocaptionsmetadata.json -
Metadatos de POST para cada archivo de subtítulos:
code language-none curl -u user:password \ -H "Content-Type: application/json" \ -d '{ "payload": [ { "filename": "chinese.vtt", "language": "Chinese", "languageCode": "zho", "role": "subtitle", "label": "ch-subtitle", "isDefault": false }] }' \ http://localhost:4502/content/dam/test/sample.mp4.audiocaptionsmetadata.json -
Recupere metadatos mediante solicitudes de GET al extremo
.audiocaptionsmetadata.jsonpara confirmar que el pie de ilustración y los archivos de audio estén correctamente asociados.Ejemplos:
- Para los subtítulos:
curl -u user:password "http://localhost:4502/content/dam/test/sample.mp4.audiocaptionsmetadata.json?type=vtt&offset=0" - Para el audio:
curl -u user:password "http://localhost:4502/content/dam/test/sample.mp4.audiocaptionsmetadata.json?type=audio&offset=0"
- Para los subtítulos:
Notas adicionales
- Este método depende de la inspección de las solicitudes HTTP realizadas desde el lado del cliente a AEM mediante herramientas para desarrolladores de navegadores como la pestaña Red de Chrome.
- Esta es una implementación interna y no es una API pública compatible.
- Este método está diseñado para la exploración y prueba en función de casos de uso y requisitos específicos.