5

Sto registrando video utilizzando AVCaptureSession con la preimpostazione di sessione AVCaptureSessionPreset640x480. Sto utilizzando uno AVCaptureVideoPreviewLayer in una dimensione non standard (300 x 300) con la gravità impostata sul riempimento dell'aspetto durante la registrazione. E 'messa a punto come questo:Esportazione di video AVCaptureSession in una dimensione corrispondente al livello di anteprima

self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession]; 
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
_previewLayer.frame = _previewView.bounds; // 300 x 300 
[_previewView.layer addSublayer:_previewLayer]; 

Dopo la registrazione del video, voglio scrivere in un file in formato Quicktime. Durante la riproduzione, sto ancora giocando il video in un livello di dimensioni non standard di 300 x 300. Poiché questi video verranno infine trasferiti su una connessione di rete, sembra inutile conservare il video completo 640x480.

Qual è il modo migliore per esportare un video in modo che corrisponda al mio livello di anteprima 300 x 300? Sono un Noob di AVFoundation, quindi se lo faccio nel modo sbagliato per favore fammelo sapere. Voglio solo che il video registrato visualizzato nel livello di anteprima durante la registrazione corrisponda al video che viene esportato su disco.

+0

Penso che [Risposta] [1] dovrebbe aiutarti. [1]: http://stackoverflow.com/a/16910263/2315453 – arunit21

risposta

10

La risoluzione video e le dimensioni del video sono due cose diverse. La risoluzione è sinonimo di chiarezza, una risoluzione più alta significa maggiore chiarezza. Considerando che, la dimensione del video è il limite in cui visualizzare il video. A seconda della risoluzione video e del formato del video, il video si allungherà o si restringerà, se visto nel visualizzatore.

Ora, come sono stati spiegati i fatti, è possibile trovare la risposta qui:

How do I use AVFoundation to crop a video

eseguire i passaggi in questo ordine:

  1. Registra video su disco.
  2. Salva da disco alla libreria di risorse.
  3. Elimina dal disco.
  4. Eseguire i passaggi indicati nel collegamento precedente.

NOTA: eseguire la procedura dopo aver registrato e scrivere il vostro video a raccolta risorse, saveComposition essendo l'attività salvata.

e fornire la dimensione in questa fase: videoComposition.renderSize = CGSizeMake(320, 240); come videoComposition.renderSize = CGSizeMake(300, 300);

E un consiglio. Dal momento che scrivere il file su disco, quindi su libreria, poi di nuovo su disco è una specie di operazione lunga. Prova a fare tutto in modo asincrono usando un dispatch_queue o operationBlock

Saluti, buon divertimento.

+0

Ha funzionato per voi ??? – croyneaus4u

+0

La contrassegnerò come la migliore risposta dal momento che è stata utile, ma non sono ancora riuscito a far funzionare correttamente il codice di ritaglio collegato. – user2393462435

+0

non sei in grado di ritagliare il video a tutti ?? qual è il problema ?? – croyneaus4u