현재 iPhone 5s/6을 사용하여 CMSampleBufferRef에 120 (iPhone 5s) 또는 240 (iPhone 6) 프레임/초를 캡처 할 수 있습니다. 그러나 나에게 반환되는 AVCaptureDeviceFormat은 1280x720의 해상도로 이러한 고속 프레임 속도만을 제공합니다.저해상도를 사용하여 프레임 버퍼에 AVCaptureVideoDataOutput을 사용하여 120/240 fps 캡처
이것을 저장 용 원형 버퍼에 넣을 것이므로 낮은 해상도 (640x480 이하)로 캡처하고 싶습니다. 나는 didOutputSampleBuffer 대리자 메서드의 해상도를 줄일 수 있지만, 720p 이미지를 가져오고 낮추는 대신 장치 나 설정을 구성하여 직접 낮은 해상도를 제공하는 CMSampleBufferRef에 대한 방법이 있는지 알고 싶습니다. CVPixelBuffer를 사용하여 수동으로 해상도를 조정합니다.
나중에 처리하기 위해 버퍼에 이미지를 저장해야하며 최소한의 처리를 적용해야합니다. 그렇지 않으면 프레임을 삭제하기 시작합니다. 크기 조정을 피하고 낮은 해상도의 CMSampleBuffer를 didOutputSampleBuffer 대리자 메서드에서 직접 가져 오는 것이 이상적입니다.
240fps에서 5ms 이내에 각 이미지를 처리해야하며 크기 조정 루틴은 이미지를이 비율로 축소 할 수 없습니다. 그러나 나중에 처리 (예 : AVAssetWriter를 사용하여 동영상에 쓰기)하기 위해 순환 버퍼에 저장하고 싶지만 더 낮은 해상도가 필요합니다.
높은 프레임 속도 기록에서 지원되는 유일한 이미지 크기는 1280x720 인 것 같습니다. 이 해상도의 여러 이미지를 프레임 버퍼에 넣으면 메모리 압력이 발생하므로 메모리에 저장하고 프레임 속도를 따라갈 수있는 경우 didOutputSampleBuffer에서 직접 저해상도 이미지를 캡처하려고합니다.
감사합니다.
이 코드를 예제 프로젝트로 공유 할 수 있습니까? 이 줄에서 압축 세션은 어디에서 얻을 수 있습니까? 'CVReturn res = CVPixelBufferPoolCreatePixelBuffer (kCFAllocatorDefault, VTCompressionSessionGetPixelBufferPool (compressionSession), & finishPixelBuffer); ' –
압축 세션을 초기화했습니다 –
감사합니다. iOS에서 사용할 수 있습니까? 'VTEncoderOutputCallback'이 내 xcode 프로젝트에서 인식되지 않습니다. 이 비디오 편집 물건에 대한 적절한 문서 없이는 좋지 않습니다. –