2012-04-27 29 views
16

Tôi đang làm việc trên một dự án nơi chúng tôi sẽ sử dụng iPhone làm máy ảnh để chụp cảnh. Khi ghi chúng ta cần phải ghi @ 60fps và không phải 30fps (như được hỗ trợ nguyên bản). Vì vậy, tôi đang làm việc trên một ứng dụng để làm điều này như là phần cứng iPhone 4S hỗ trợ 720p @ 60fps (nếu bạn jailbreak điện thoại của bạn, bạn có thể đạt được điều này).Chụp 60 khung hình/giây trong ứng dụng iPhone

Có ai biết cách thực hiện điều này trong Objective-C trên iOS không? Hôm nay tôi thấy một ứng dụng trên đó (slopro) có thể ghi 60 hình/giây trên các điện thoại không được bẻ khóa. Bất kỳ lời khuyên hay lời khuyên nào được đánh giá cao.

+3

Không biết tại sao câu hỏi này được bình chọn phải đóng cửa? Có vẻ như một câu hỏi tốt, không trùng lặp được hỏi sau khi nghiên cứu tốt. Chắc chắn OP không biết bắt đầu từ đâu, nhưng ít nhất anh ta nói những gì anh ta đang tìm kiếm là có thể và đã được thực hiện bởi các ứng dụng khác trên các điện thoại không jailbroken. – Krishnabhadra

+1

Có, để làm rõ, tôi không muốn Jailbreak. Có một số ứng dụng chuyển động chậm ra khỏi đó cho iPhone (TimeFreeze, slopro). Vì vậy, tôi biết điều đó là có thể. – Michel

Trả lời

7

tôi đã không cố gắng này trước đây, có lẽ những có liên quan:

+0

Được rồi, tôi sẽ xem xét nó.Không ai biết giá trị tối đa được hỗ trợ cho các thuộc tính này là gì? – Michel

+0

Tôi chỉ nhận thấy rằng tôi đã đưa ra một số liên kết không đúng (đối với Mac OS) trong câu trả lời của tôi. Xin lỗi và tôi đã xóa nhầm. – Hailei

+0

Xin chào, có ai có may mắn với điều này không? – Odrakir

15

Sau khi một số tinkering, câu trả lời này đã chia thành hai phần:

Làm thế nào để nắm bắt khung hình ở 60fps

Các AVCaptureSessionPreset1280x720 trên iPhone4s/5.1, với khoảng thời gian khung thiết lập để:

connection.videoMinFrameDuration = CMTimeMake(1, 60);* 
connection.videoMaxFrameDuration = CMTimeMake(1, 60); 

mang đến cho bạn một, chụp siêu mịn ổn định.

Làm thế nào để nắm bắt khung hình vào một tập tin @ 60fps
Chụp khung hình là tất cả rất tốt, nhưng có lẽ bạn muốn giữ chúng.
Như Brad lưu ý trong các ý kiến, viết những khung hình đó vào một tập tin là một câu chuyện khác. Đáng buồn thay, bất kể cấu hình nào tôi đã thử, mã hóa khung hình qua AVAssetWriter khiến tốc độ chụp giảm xuống mức quan sát ~ 37fps và không có số lượng không quan trọng với alwaysDiscardsLateVideoFrames có thể thay đổi. Tuy nhiên, trong cách tiếp cận này, mỗi khung hình duy nhất được sao chép từ AVFoundation vào ứng dụng của bạn, và sau đó lại quay trở lại, điều này khá vô nghĩa và rất phù hợp với xe buýt. May mắn thay, AVFoundation có một lớp học loại bỏ chuyến đi khứ hồi này: AVCaptureMovieFileOutput.

Nếu bạn để AVFoundation thực hiện việc viết cho bạn thì iPhone4S có thể chụp và mã hóa khung + âm thanh thành tệp .mov ở tốc độ 60 khung hình/giây mà không làm đổ mồ hôi (~ 25% CPU).

Trong khi quay video 60fps là tính năng tuyệt vời, tôi không thể không cảm thấy hơi thất vọng khi AVCaptureMovieFileOutput quy tắc ra rất nhiều điều thú vị (ví dụ: hiệu ứng thời gian thực với bóng đổ GL, ghi bắt đầu/dừng mà không bị mất khung).

bánh/ăn nó

* 59 nếu bạn vẫn đang chạy iOS 5.0.1

+0

Tôi có thể xác nhận rằng buộc tốc độ khung hình đến 60 FPS (bạn thực sự có thể sử dụng 60 thay vì 59 trong mã trên) hoạt động trên iPhone 4S, mặc dù không phải là iPad mới (Retina), nhưng nó chỉ hoạt động với cài đặt trước 720p, không phải cho 640x480 hoặc 1080p. Tôi đã có thể chụp và quay phim với tốc độ 59.87 FPS (giảm một vài khung hình lúc đầu), mặc dù tôi đã phải bỏ âm thanh và giảm tốc độ video xuống 640x480 để cho phép AVAssetWriter tiếp tục triển khai. Nó ghi lại ở 37 FPS với ghi âm và khung hình đầy đủ 720p. –

+0

Trên iOS 5.0.1 59fps có vẻ là tỷ lệ duy nhất phù hợp với tôi. Tôi sẽ cập nhật câu trả lời của tôi sau một số bài kiểm tra khác. –

+0

Các thử nghiệm của tôi là trên 5.1 và 'CMTimeMake (1, 60)' được phân phối như được quảng cáo ở đó. Cho rằng đây không phải là tài liệu chính xác, có rất tốt có thể là sự khác biệt giữa các cập nhật điểm. –

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