2011-02-06 30 views
7

Tôi đang cố tạo nhiều phiên viết nối tiếp với AVAssetWriter. Một khi tôi đã hoàn thành một thành công (sau khi gọi finishWriting), trạng thái được đặt thành 2 (AVAssetWriterStatusCompleted).AVAssetWriter nhiều phiên và thuộc tính trạng thái

Đang cố gắng để tạo ra phiên khác, tôi gọi startWriting, nhưng tôi nhận được lỗi:

[AVAssetWriter startWriting] cannot call method when status is 2 

Có vẻ tôi không thể tạo ra một phiên viết, trừ khi tôi cấu hình một cái gì đó. Tôi có phải tạo lại AVAssetWriter không? Tôi phải thiếu một cái gì đó, và các tài liệu không giúp đỡ.

Cảm ơn.

Trả lời

17

Sau khi người viết hoàn thành, nó không thể sử dụng được nữa. Bạn phải tạo một cái mới. Từ tài liệu:

Bạn chỉ có thể sử dụng một phiên bản AVAssetWriter đã cho một lần để ghi vào một tệp. Nếu bạn muốn ghi vào các tệp nhiều lần, bạn phải sử dụng một phiên bản mới AVAssetWriter mỗi lần.

Tôi có một ứng dụng mà tôi sử dụng hai AVAssetWriters. Tôi tạo ra hai nhà văn, nơi chỉ có một người đang hoạt động tại một thời điểm. Khi một số khoảng thời gian đạt được, tôi đẩy người viết hoạt động lên hàng đợi GCD để hoàn thành và giải trí, và đặt con trỏ của người viết hoạt động cho người viết khác.

if(time > delta) 
    dispatch(^{ finish writer, create new one }) 
    active_writer = next writer 

Điều này hoạt động tốt khi sử dụng hàng đợi chụp. Bạn có thể thiết lập một công tắc để thực hiện các thao tác cho trạng thái của người viết.

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