Uscita audio sincronizzato con il video in AVMutableComposition reso
-
10-10-2019 - |
Domanda
Ho un AVMutableComposition
con i seguenti segmenti di binario:
video:
empty: Y, {{0/1 = 0.000}, {48/100 = 0.480}}
empty: N, {{48/100 = 0.480}, {600/600 = 1.000}}
empty: Y, {{888/600 = 1.480}, {900/600 = 1.500}}
empty: N, {{894/300 = 2.980}, {1040/600 = 1.733}}
audio:
empty: Y, {{0/1 = 0.000}, {48/100 = 0.480}}
empty: N, {{48/100 = 0.480}, {45056/44100 = 1.022}}
empty: Y, {{66224/44100 = 1.502}, {65194/44100 = 1.478}}
empty: N, {{894/300 = 2.980}, {77824/44100 = 1.765}}
La fasatura è espresso come CMTimeRange
, il primo CMTime
è il tempo di inizio, il secondo è la durata. In altre parole, ci sono due pezzi + audio video con qualche spazio vuoto imbottitura prima e tra di loro.
Il problema è che quando esporto questa composizione e riprodurre il video esportato, il secondo segmento audio viene riprodotto troppo presto, come se il secondo segmento audio imbottitura vuoto è stato ignorato durante l'esportazione. Ottengo il primo segmento video con audio corretto, poi subito il secondo segmento audio e poi il secondo segmento video senza audio.
Cosa potrebbe esserci di sbagliato?
Soluzione
Il problema era nell'esportazione. Stavo usando la modalità pass-through di esportazione che semplicemente copia i segmenti di traccia nel file risultante. Credo che il tempo francobolli sono semplicemente copiati, anche, che provoca un disastro nella timeline del filmato esportato. Impostare la modalità di esportazione a qualcosa d'altro rispetto al pass-through risolve il problema.