5

Tôi đang quay video bằng cách sử dụng AVCaptureSession với giá trị đặt trước phiên AVCaptureSessionPreset640x480. Tôi đang sử dụng một số AVCaptureVideoPreviewLayer ở kích thước không chuẩn (300 x 300) với lực hấp dẫn được đặt để điền vào khía cạnh khi ghi. Thiết lập như sau:Xuất video AVCaptureSession ở kích thước phù hợp với lớp xem trước

self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession]; 
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill; 
_previewLayer.frame = _previewView.bounds; // 300 x 300 
[_previewView.layer addSublayer:_previewLayer]; 

Sau khi quay video, tôi muốn ghi nó vào tệp ở định dạng nhanh. Trong khi phát lại, tôi lại một lần nữa phát video trong lớp kích thước không chuẩn 300 x 300. Vì những video này cuối cùng sẽ được chuyển qua kết nối mạng, có vẻ như lãng phí khi giữ video 640x480 đầy đủ.

Cách tốt nhất để xuất video để phù hợp với lớp xem trước 300 x 300 của tôi là gì? Tôi là một AVFoundation noob, vì vậy nếu tôi đang đi về điều này một cách sai lầm xin vui lòng cho tôi biết. Tôi chỉ muốn video đã ghi được hiển thị trong lớp xem trước trong quá trình ghi để khớp với video được xuất trên đĩa.

+0

Tôi nghĩ điều này [Trả lời] [1] sẽ giúp bạn. [1]: http://stackoverflow.com/a/16910263/2315453 – arunit21

Trả lời

10

Độ phân giải và kích thước video là hai điều khác nhau. Độ phân giải là viết tắt của độ rõ nét, độ phân giải cao hơn có nghĩa là độ rõ nét cao hơn. Trong khi đó, kích thước video là giới hạn để hiển thị video. Tùy thuộc vào độ phân giải video và tỷ lệ khung hình của video, video sẽ kéo dài hoặc thu nhỏ, khi được nhìn thấy trong trình xem.

Bây giờ như các sự kiện đã được giải thích, Bạn có thể tìm thấy câu trả lời của bạn ở đây:

How do I use AVFoundation to crop a video

Thực hiện các bước theo thứ tự này:

  1. Ghi video vào đĩa.
  2. Lưu từ Đĩa vào thư viện nội dung.
  3. Xóa khỏi đĩa.
  4. Thực hiện các bước được đề cập trong liên kết ở trên.

Chú ý: Thực hiện các bước sau và viết ghi video của bạn vào thư viện tài sản, saveComposition là tài sản lưu.

và cung cấp kích thước của bạn trong bước này: videoComposition.renderSize = CGSizeMake(320, 240); như videoComposition.renderSize = CGSizeMake(300, 300);

Và một lời khuyên. Kể từ khi ghi tập tin vào đĩa, sau đó vào thư viện, sau đó một lần nữa trở lại đĩa là loại hoạt động lâu dài. Hãy thử làm tất cả không đồng bộ bằng cách sử dụng dispatch_queue hoặc operationBlock

Chúc mừng, vui vẻ.

+0

Nó có phù hợp với bạn không ??? – croyneaus4u

+0

Tôi sẽ đánh dấu đây là câu trả lời hay nhất vì nó hữu ích, nhưng tôi vẫn chưa thể lấy mã cây trồng được liên kết để hoạt động bình thường. – user2393462435

+0

bạn không thể cắt video? vấn đề là gì ?? – croyneaus4u

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