El objetivo es ver subtítulos html en formato vtt en TV cuando AirPlay se está ejecutando.
código HTML:
<video preload="metadata" x-webkit-airplay="allow" src="a.mp4"> <track kind="subtitles" default="" src="en.vtt" srclang="en"> <track kind="subtitles" src="de.vtt" srclang="de"> <track kind="subtitles" src="es.vtt" srclang="es"> <track kind="subtitles" src="fr.vtt" srclang="fr"> </video>El problema es cuando AirPlay está habilitado, el video y el audio se reproducen en la TV, pero no se muestran los subtítulos.
Traté de incluir subtítulos vtt/srt en los metadatos mp4 con ffmpeg y subtítulos que funcionan con VLC pero no funcionan cuando AirPlay estos archivos
ffmpeg -i 8499.mp4 -i 8499.en.vtt -map 0:v -map 0:a -c copy -map 1 -c:s:0 mov_text -metadata:s:s:0 language=en 8499.en.mp4 ffmpeg -i 8499.mp4 -i 8499.en.srt -map 0:v -map 0:a -c copy -map 1 -c:s:0 srt -metadata:s:s:0 language=en 8499.en.mp4También intenté enviar un .m3u8 sin suerte. ¿Alguno de ustedes sabe cómo funciona el formato básico para un simple .m3u8 con .mp4 y .vtt cuando AirPlay?
¿Cuál es la solución de subtítulos estándar para AirPlay?
No me sorprende que iOS no transmita mediante Airplay los subtítulos VTT de <video> a un sumidero de Airplay.
iOS (y probablemente tvOS también) solo admite 1 formato de subtítulos/subtítulos incrustados: MP4 Timed Text / MPEG-4 Part 17 . A veces se llama Quicktime Timed Text. Safari también admite VTT (pero no SRT) para <video> , pero eso es solo en Safari.
Uno de sus ejemplos de ffmpeg está cerca. Si desea reproducir archivos MP4 de Airplay con subtítulos/títulos, debe comenzar con un archivo de subtítulos SRT como entrada. No es un archivo de texto temporizado MP4 (que es mucho menos común que SRT ). Usar mov_text lo codificará.
Este es un ejemplo que encontré en otra respuesta relacionada con esta pregunta.
ffmpeg -i infile.mp4 -i infile.srt -c copy -c:s mov_text outfile.mp4
Nota: el orden de los comandos -c es importante si usa -c copy . Debe especificar cualquier cambio de secuencia de origen después