2014-11-05 17 views

Trả lời

23

Tôi đã tìm thấy giải pháp là an answer to a completely different question.

Sự cố là thuộc tính movieFragmentInterval trong AVCaptureMovieFileOutput.

Các tài liệu cho thuộc tính này giải thích những gì những mảnh vỡ là:

Một QuickTime phim bao gồm các mẫu phương tiện truyền thông và một bảng mẫu xác định vị trí của họ trong file. Tệp phim không có mẫu không thể đọc được.

Trong tệp được xử lý, bảng mẫu thường xuất hiện ở đầu tệp . Nó cũng có thể xuất hiện ở cuối tệp, trong trường hợp tiêu đề chứa con trỏ tới bảng mẫu ở đầu . Khi một tập tin phim mới đang được ghi lại, không thể viết bảng mẫu vì kích thước của tệp chưa được biết. Thay vào đó, bảng phải được viết khi quá trình ghi hoàn tất. Nếu không thực hiện hành động nào khác, điều này có nghĩa là nếu bản ghi không hoàn tất thành công (ví dụ, trong trường hợp xảy ra sự cố), tệp dữ liệu không sử dụng được (vì không có bảng mẫu). Theo định kỳ chèn "đoạn phim" vào tệp phim, bảng mẫu có thể được tăng lên một cách từng bước. Điều này có nghĩa là nếu tệp không được viết hoàn toàn , thì tệp phim vẫn có thể sử dụng được (đến điểm mà đoạn cuối cùng đã được viết).

Nó cũng nói:

Giá trị mặc định là 10 giây. Đặt thành kCMTimeInvalid để tắt phim viết đoạn (thường không được khuyến nghị).

Vì vậy, vì lý do nào đó, bản ghi của tôi bị rối tung lên bất cứ khi nào đoạn văn được viết. Tôi vừa thêm dòng movieFileOutput.movieFragmentInterval = kCMTimeInvalid; (trong đó movieFileOutput là AVCaptureMovieFileOutput mà tôi đã thêm vào AVCaptureSession) để tắt tính năng viết đoạn và âm thanh hiện hoạt động.

2

Cập nhật videoFileOutput.movieFragmentInterval = kCMTimeInvalid giải quyết vấn đề này cho tôi.

Tuy nhiên, tôi vô tình đặt movieFragmentInterval sau khi gọi startRecordingToOutputFileURL. Một giờ đau đớn sau đó tôi nhận ra sai lầm của mình. Đối với những người mới như tôi, lưu ý chuỗi rõ ràng này.

videoFileOutput.movieFragmentInterval = kCMTimeInvalid 
videoFileOutput.startRecordingToOutputFileURL(filePath, recordingDelegate: recordingDelegate) 
2

Chúng tôi cũng gặp phải sự cố này. Về cơ bản việc vô hiệu hóa việc viết đoạn phim sẽ hoạt động nhưng nó không thực sự giải thích vấn đề. Nhiều khả năng bạn đang ghi vào tệp đầu ra bằng cách sử dụng đuôi tệp không hỗ trợ tính năng này, như mp4. Nếu bạn chuyển một tập tin đầu ra với phần mở rộng mov, bạn sẽ không gặp vấn đề gì khi sử dụng đoạn văn bản phim và tập tin đầu ra sẽ có âm thanh.

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