¿Se puede forzar a AVFoundation a reproducir un file .ts local?

Claramente, AVFoundation (y Quicktime X) pueden demultiplexar y reproducir contenedores .ts codificados adecuadamente, ya que los contenedores .ts subyacen HTTPS en vivo.

A falta de configurar un service web local para servir los .m3u8 y .m3u8 asociados, realmente me gustaría poder: convencer a AVURLAsset y / o a URLAssetWithURL para que acepte un file local .m3u8 URI como si fuera un HTTP URI, o mejor aún, puede usar AVQueuePlayer para cargar y reproducir una secuencia de files .ts sin saltar a través de los aros de transmisión en vivo.

La razón por la que quiero hacer esto es que necesito generar activos de película localmente de forma un tanto fragmentada: el activo completo no estará disponible a la vez, sino que se generará a medida que pase el time. Obviamente, esto se presta a un AVQueuePlayer pero por diversas razones mis fragments de activos están empaquetados en contenedores .ts . Todo esto suena como perfecto para la transmisión en vivo "local".

Sospecho que URLAssetWithURL hace alguna calificación de la cadena que se le pasa y luego establece algunas properties para indicar que está buscando una fuente de transmisión en vivo que a su vez le AVPlayer a AVPlayer / AVQueuePlayer que esperen pistas en formatting .ts . Probablemente vea HTTP y decide que se trata de transmisión en vivo.

Entonces, mi pregunta es: ¿cómo se podría hacer para "engañar" a AVFoundation en el event handling un file local .m3u8 exactamente como lo hace en un remoto?

Y la pregunta adicional es: ¿Alguien (y de ser así cómo) ha podido hacer un AVAsset desde un file .ts para que el activo devuelva el estado de las pistas del activo (prepararse para la reproducción)?

¡TIA!

Este problema también fue molesto para nosotros durante mucho time. Finalmente hemos decidido escribir una herramienta para convertir una list de ts en un file mp4. Consiste en usar TSDemux para demuxear y concatenar videos / audios y luego generar un file mp4 con GPAC.

Realmente responde a tu pregunta, pero puede ser una forma de hacer lo que quieres hacer. Esta herramienta está en Github, puedes probar: https://github.com/Keemotion/TS2MP4

En realidad, puede crear las descripciones AVURLA directamente desde los files ts subyacentes, y reproducirlas directamente, muy similar a la forma en que jugaría un file mov o mp4.

Hay algunos gastos generales para cada file ts, por lo que lo mejor que puede hacer es simplemente ingresar los files en un file ts grande (basado en los contenidos de su m3u8) y reproducir ese file grande.

Hay un par de gotcha: las comstackciones AV construidas utilizando files AVA basados ​​en ts tienen mucha memory, así que evite AVCompositions aparte de los files pequeños. No puede usar AVAssets basadas en files ts en una película de reference.