2015-04-19 14 views
7

W aplikacji, którą właśnie rozwijam, chciałbym pozwolić użytkownikowi wybrać rozdzielczość nagrywania wideo. Ze względu na specyfikację nie mogę używać stałych AVCaptureSessionPreset.
Uzyskiwanie listy formatów są rozdzielczości powyżej 3000px, które oczywiście nie mogą działać do przechwytywania wideo, ale tylko do fotografowania.
Dowiedz się, czy AVCaptureDeviceFormat pasuje do nagrywania wideo

AVCaptureDeviceFormat: 0x17020c830 'vide'/'420F' 3264x2448 {2- 30 FPS} HRSI: 3264x2448, pole widzenia: 58,040, max Powiększenie: 153.00 (skaluje @ 1,00), AF systemu: 2 , ISO: 29.0-1856.0, SS: 0.000013-0.500000

Nie mogę znaleźć sposobu sprawdzenia, czy określony format nadaje się do nagrywania wideo.
Problem polega na tym, że przy takiej rozdzielczości, gdy próbuję pobrać film, aplikacja generuje wyjątek informujący, że nie ma aktywnego lub włączonego połączenia.

- [AVCaptureMovieFileOutput startRecordingToOutputFileURL: recordingDelegate:] - aktywny/włączony połączenia.

Nie chcę również limitować kodów twardych dla każdego rodzaju urządzenia.
Nie mogę również próbować ograniczyć limitu do AVCaptureSessionPresetHigh, ponieważ jak podano w Apple note, nie jest to faktyczny format maksymalny.
Czy istnieje sposób na zrozumienie, czy AVCaptureDeviceFormat nadaje się do przechwytywania wideo?

Odpowiedz

2

Po ustawieniu wszystkich połączeń z wybraną opcją -activeFormat należy sprawdzić, czy bieżący AVCaptureConnectionisActive lub obserwować za pomocą KVO, właściwość -active. Jeśli nie, format nie jest dostępny do przechwytywania wideo, jeśli jest tak, można go użyć.

+1

Dziękujemy za opublikowanie tego rozwiązania! – AlexeyVMP

+2

Rewizja. Dobry pomysł na debugowanie i testowanie rzeczy, ale nie na kod produkcyjny, ponieważ przejście przez wszystkie formaty na iPhone 5s zajmuje kilka sekund. Wygląda na to, że aplikacja zawiesiła się. –

Powiązane problemy