2016-01-06 13 views
12

Używam AVCaptureSession do przechwytywania i nagrywania wideo.Może AVCaptureSession użyć niestandardowej rozdzielczości

Potrzebuję nagrać film w proporcji 4: 3 i przy dobrej rozdzielczości.

Czy istnieje sposób określenia niestandardowej rozdzielczości podczas przechwytywania przy użyciu AVCaptureSession?

Próbowałem używać natywnych ustawień domyślnych, ale problemem jest to, że muszę przechwytywać w stosunku 4: 3, a prawie wszystkie z ustawień to 16: 9. a te, które mają 4: 3, mają bardzo małą rozdzielczość.

Nie mogę sfilmować w żaden inny sposób, aby zmienić ustawienie na niestandardowe, a co jeśli potrzebuję przechwycić film 4: 3 z lepszą rozdzielczością? Jakieś pomysły?

+0

Czy możesz podać więcej informacji? jakie opcje wstępne próbowałeś? –

+0

próbowałeś AVCaptureSessionPreset640x480? –

+0

@ Mr.T potrzebuję lepszej rozdzielczości – Eyal

Odpowiedz

8

AVCaptureSession Ustawienia wstępne obejmują tylko niewielki podzestaw możliwości aparatu urządzenia (te, które większość aplikacji chce szybko i łatwo uzyskać dostęp). Aby uzyskać bardziej precyzyjne sterowanie - takie jak wybór rozdzielczości przechwytywania, której nie zapewnia ustawienie wstępne sesji, należy zamiast tego używać formatów przechwytywania.

Sprawdź właściwość urządzenia przechwytywania: formats, tablicę obiektów AVCaptureDeviceFormat. Wylicz w tej tablicy, aż znajdziesz taką, której wymiary są tym, czego potrzebujesz. Aby uzyskać wymiary, spójrz na format, na których opierają CMFormatDescription:

let fdesc = format.formatDescription 
let dims = CMVideoFormatDescriptionGetDimensions(fdesc) 
NSLog("%d x %d", dims.width, dims.height) 

Po znalezieniu formatu chcesz zablokować urządzenie do konfiguracji i ustawić jej activeFormat:

if try device.lockForConfiguration() { 
    device.activeFormat = myChosenFormat 
    // set up other things like activeVideoMinFrameDuration if you want 
    device.unlockForConfiguration() 
} 

można dowiedzieć się, więcej informacji o konfigurowaniu sesji przechwytywania za pomocą AVCaptureDeviceFormat w Apple programming guide i the WWDC2013 session, które wprowadziły formaty urządzeń z powrotem w iOS 7.0. (Większość informacji o tym temacie dotyczy filmów w zwolnionym tempie, wykonywania zdjęć w wysokiej rozdzielczości podczas wideo i innych rzeczy, których nie można wykonać za pomocą ustawień wstępnych sesji, ale nie są to jedyne rzeczy, które można wykonać za pomocą formatów przechwytywania.)

+0

cześć dzięki za odpowiedź yr, podczas drukowania dims to szwy, że nie ma nowych wymiarów, ale wiele duplikatów . i nie znalazłem sposobu na stworzenie nowego formatu (nie jestem pewien, czy to możliwe) – Eyal

1

Po prostu nagrywaj w danym formacie obrazu i użyj przycięcia AVMutableComposition, aby przyciąć wideo wyjściowe do wymaganego współczynnika proporcji: Jeśli dopasujesz warstwę podglądu do maski 4: 3, będzie to wyglądało bezproblemowo użytkownik.

Powiązane problemy