3 votes

Problèmes avec le streaming Http de l'iPhone avec des fichiers vidéo concaténés

Nous constatons ce problème lorsque nous "lions" deux fichiers vidéo ensemble.

Par exemple, nous avons une vidéo publicitaire qui est segmentée et un fichier de contenu qui est également segmenté. Nous créons un nouveau fichier qui contient les informations des segments publicitaires et de contenu. Cependant, nous constatons que le contenu publicitaire est tronqué ou que le contenu commence à avoir des problèmes de synchronisation audiovisuelle. La publicité et le contenu sont tous deux segmentés de la même manière, à savoir une segmentation de 5 secondes. Cependant, étant donné que les publicités sont de longueur variable, le fichier de résultat peut contenir des segments restants, par exemple :

#EXTM3U
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5, 
fileSequence6.ts
#EXTINF:5, 
fileSequence7.ts
#EXTINF:4, 
fileSequence8.ts
#EXTINF:5, 
fileSequence0.ts
#EXTINF:5, 
fileSequence1.ts
#EXTINF:5, 
fileSequence2.ts
#EXTINF:3, 
fileSequence3.ts

Est-ce la bonne façon de lire 2 fichiers l'un après l'autre sans rebondir ? Faut-il utiliser generate-variant-plist pour une liste de lecture de 2 fichiers ?

0voto

Barney Mattox Points 2194

Lorsque vous interrompez le flux pour passer à une publicité, une annonce ou une autre source vidéo, vous devez introduire la balise de discontinuité avant le début du segment suivant, par exemple :

#EXTM3U
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5, 
movie0.ts
#EXTINF:2, 
movie1.ts
#EXT-X-DISCONTINUITY
#EXTINF:5,
commercial0.ts
#EXTINF:5, 
commercial1.ts
#EXTINF:3, 
commercial2.ts

Cela devient un peu plus compliqué si vous cryptez les flux car ils utilisent un cryptage progressif basé sur l'état de cryptage des segments précédents et le numéro de séquence qui se combinent pour former un "vecteur d'initialisation". Si vous brisez le flux, vous devez réinitialiser le vecteur d'initialisation afin que le cryptage/décryptage puisse se poursuivre sans interruption. Comme il s'agit d'un processus complexe, il est préférable de faire une recherche sur le vecteur d'initialisation dans la documentation d'Apple.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X