Domanda

Sto facendo fatica a capire come convertire un flusso di movimento JPEG a 30fps usando AvassetWriter in un file video. La parte che non sto ottenendo è il metodo [Adattatore AppendPixelBuffer: Buffer withPresentationTimeresentTime].

Come si calcola il valore con prescensione se voglio produrre video MPEG4 30fps?

La fonte video è una fotocamera che trasmette il movimento di 30fps JPEG in tempo reale.

Apprezzo qualsiasi idea.

Grazie

È stato utile?

Soluzione

Dovrai generare una struttura cm -time usando cmtimemake. Dovrai aumentare il tempo di 1/30 di secondo per ogni frame.

Ecco uno schizzo:

CMTime time = CMTimeMake(0, 30); // (time, time_scale)

for(each image) {
  [adaptor appendPixelBuffer:buffer withPresentationTime:time]
  time.value += 1; 
}

Con l'impostazione del tempo come mostrato, la risoluzione temporale più piccola è 1/30 di secondo. time / time_scale = 1 secondo. Non sono sicuro se esiste un requisito specifico per H.264. Avfoundation utilizza una scala temporale di 1000000000 (1.000.000.000 o 1 miliardo) quando si cattura (nella mia esperienza).

Aggiornare:

Solo per rivedere. Dalla struttura cmtime:

CMTimeValue value;  /*! @field value The value of the CMTime. value/timescale = seconds. */
CMTimeScale timescale;  /*! @field timescale The timescale of the CMTime. value/timescale = seconds.  */

La base di tempo rimarrebbe lo stesso durante il video. Supponiamo che tu abbia un valore corrente di 10 con una scala temporale di 30. Il tempo corrente in secondi è 10/30 = 0,33333 secondi. Il valore temporale per il 40 ° fotogramma del film è 40/30 = 1.33333. Quindi il 40 ° frame dovrebbe renderla a 1,3333 secondi nel film.

Non sono sicuro che questa base di tempo sia appropriata per un video H.264. Non ho familiarità con le specifiche. So che quando catturare video la base di tempo di presentazione per i fotogrammi video è 1000000000. Tecnicamente non dovrebbe importare. Il tempo è un numero razionale - 1000000000 /1000000000 = 1 secondo e 30/30 = 1 secondo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top