2013-03-29 41 views
7

Tôi sử dụng khung hình AVFoundation để hiển thị video từ máy ảnh.Máy ảnh AVFoundation zoom

Mã làm thế nào tôi sử dụng nó là bình thường:

session = [[AVCaptureSession alloc] init] ; 
... 
captureVideoPreviewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session]; 
... 
[cameraView.layer addSublayer:captureVideoPreviewLayer]; 
... 

Vì vậy, tôi muốn thêm chức năng zoom đến camera.

Tôi đã tìm thấy 2 giải pháp cách triển khai thu phóng.

Đầu tiên: là sử dụng CGAffineTransform:

cameraView.transform = CGAffineTransformMakeScale(x,y);

Second: là đặt cameraView trong giao diện di chuyển, thiết lập max và min di chuyển và thiết lập quan điểm này như chế độ xem phóng to.

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
{ 
    return cameraView; 
} 

Cách tốt nhất để thu phóng hiệu suất và chất lượng tốt hơn là gì? Có giải pháp nào khác để thu phóng không? Có lẽ tôi đã bỏ lỡ một số phương pháp để thu phóng hình ảnh AVFoundation.

Cảm ơn bạn.

+0

Tôi đã hy vọng cho một số ý kiến ​​từ một chuyên gia thực sự nhưng vì không ai đã nói chuyện trong tôi nghĩ rằng tôi muốn chia sẻ kinh nghiệm của tôi. Vì không có zoom cơ học thực sự, nó thực sự chỉ chơi với các tỷ lệ khung hình. Tôi đã tìm thấy khi làm việc với các lớp bằng cách sử dụng CGAffineTransform để làm việc rất tốt, đặc biệt là nếu bạn thiết lập AVCaptureVideoPreviewLayer.videoGravity thiết lập của bạn khi tạo phiên của bạn. liên kết biến đổi với một thanh trượt hoặc cử chỉ chụm là khá thẳng về phía trước. Biến đổi thậm chí xử lý các kích thước khung hình lẻ nếu bạn đặt khung của nó thành giới hạn lượt xem. hy vọng rằng sẽ giúp. – CocoaEv

+0

Cảm ơn bạn đã trả lời một số câu hỏi, tôi muốn thực hiện phóng to bằng cách chuyển đổi, nhưng tôi đã dành rất ít thời gian để làm cho nó sử dụng tính năng phóng to thu nhỏ, hoạt động tuyệt vời :) Tôi nghĩ rằng câu hỏi có thể là khung công tác AV có thứ gì đó để phóng to. –

+0

mẹo hay về chế độ xem cuộn. Tôi cũng sẽ kiểm tra điều đó. – CocoaEv

Trả lời

6

Thực ra, có một số GCFloat được gọi là setVideoScaleandCropFactor.

Bạn có thể tìm tài liệu here.

Tôi không chắc đây có phải là đầu ra hình ảnh hay không nhưng tôi đã làm việc trên nó và nó hoạt động tốt nếu bạn đặt nó thành cử chỉ hoặc thanh trượt và để điều khiển phao.

Bạn có thể tìm thấy bản trình diễn của nó here.

Nội dung hay. Tôi đang cố gắng lặp lại nó để tôi có thể tạo một máy quét mã vạch với zoom. Những gì im làm là thô mặc dù haha.

+2

videoScaleAndCropFactor không hoạt động đối với video. videoMaxScaleAndCropFactor được đặt thành 1.0 và nếu bạn thay đổi videoScaleAndCropFactor thì một ngoại lệ sẽ bị ném. –

+0

@Nathan Kellert tôi không nhận được thuộc tính AVCaptureSession VideoScaleandCropFactor, bạn có thể giải thích cách thực hiện phóng to video (Không Quy mô chế độ xem video) ...? –

+0

Quy mô video và yếu tố cây trồng là độ phóng đại của chính video thực. Không giống như các phương pháp phát triển trước đây được sử dụng. Đó là 1) quay video 2) chia tỷ lệ 3) thu lại video dựa trên thang đo mới (nguyên nhân gây ra pixelation). Các công cụ mới ios 7 thực sự phóng to trong video đầu tiên và sau đó chụp nó ở độ phân giải đầy đủ. Về cơ bản, bạn muốn đặt chế độ xem thu phóng sao cho người xem có thể nhìn thấy trên màn hình giống như điều mà video thực sự đang quay. Nếu không, video có thể đang quay video thu phóng nhưng màn hình trông hoàn toàn bình thường. Ứng dụng demo thực sự làm rất nhiều để giúp hiển thị nó hoạt động như thế nào. –

Các vấn đề liên quan