2012-01-24 26 views
5

Tôi có AVMutableComposition mà tôi đã liên kết với AVPlayer. Dường như nếu tôi thêm bản nhạc vào thành phần này thì AVPlayer không phát các bản nhạc được thêm vào trừ khi tôi thiết lập lại bố cục trên trình phát. Ngay bây giờ tôi đang làm điều này bằng cách thay thế mục hiện tại bằng cùng một bố cục đã được thiết lập. Sau đó nó chọn lên các bài hát mới.Tải lại AVMutableComposition

Tôi đã không thể tìm ra nếu đây là cách chính xác để làm điều đó, nó bằng cách nào đó có vẻ hơi lạ một chút để làm điều đó như thế.

Bất kỳ ý tưởng nào?

Cảm ơn

+0

nhưng bạn không thấy rằng nó là lạ ?! nếu bạn đang xóa một bản nhạc, thì bạn không cần phải thay thế mục của người chơi và bản nhạc này sẽ ngừng phát mà không cần thêm bất kỳ thay thế nào khác !!! – AMTourky

Trả lời

5

Về cơ bản mặc dù nó có thể thay đổi thành phần, táo khuyên bạn nên tạo ra một thành phần không thể thay đổi và tạo AVPlayerItem cho các mục đích phát lại. Đó là một chút khó chịu nhưng bạn có thể đi xung quanh nó. Khi bạn muốn làm mới video, chỉ cần lấy mẫu thời gian, tạo một AVPlayerItem khác và tải nó vào đúng thời điểm.

Dưới đây là đoạn trích từ tài liệu AVMutableComposition táo của

AVMutableComposition là một lớp con có thể thay đổi các AVComposition bạn sử dụng khi bạn muốn tạo ra một thành phần mới từ tài sản hiện có. Bạn có thể thêm và xóa các bản nhạc và bạn có thể thêm, xóa và chia tỷ lệ thời gian phạm vi.

Bạn có thể tạo một bản chụp bất biến của một thành phần có thể thay đổi cho phát lại hoặc kiểm tra như sau:

AVMutableComposition *myMutableComposition = 
    <#a mutable composition you want to inspect or play in its current state#>; 

AVComposition *immutableSnapshotOfMyComposition = [myMutableComposition copy]; 

// Create a player to inspect and play the composition. 
AVPlayerItem *playerItemForSnapshottedComposition = 
    [[AVPlayerItem alloc] initWithAsset:immutableSnapshotOfMyComposition]; 

Thông tin thêm: Full Document

+1

cảm ơn cho câu trả lời, đó là cơ bản những gì tôi đang làm bây giờ, nhưng điều đó xác minh rằng đó là cách để làm điều đó. –