2010-11-26 38 views
5

Tôi hiện đang sử dụng AVPlayer, cùng với AVPlayerLayer để phát lại một số video. Trong khi phát lại video, tôi đã đăng ký cập nhật thời gian cứ 30 giây một lần trong video. Điều này được sử dụng để vẽ đồ thị gia tốc tại điểm đó trong video và cập nhật nó cùng với video. Biểu đồ đang sử dụng CMTime từ video, vì vậy nếu tôi chuyển sang phần khác của video, biểu đồ ngay lập tức biểu thị thời điểm đó trong video mà không cần thêm công việc.AVPlayerLayer - Lập trình lại bánh xe?

Anywho, theo như tôi biết, nếu tôi muốn có một giao diện tương tự như những gì mà khung MediaPlayer cung cấp, tôi sẽ phải tự mình làm điều đó.

Điều tôi đang tự hỏi là, có cách nào để sử dụng AVPlayer của tôi với khung công tác MediaPlayer không? (Không phải là tôi có thể thấy.) Hoặc, có cách nào để đăng ký cập nhật thời gian gia tăng với khung công tác MediaPlayer không.

Mã của tôi, nếu có ai quan tâm, sau:

[moviePlayer addPeriodicTimeObserverForInterval: CMTimeMake(1, 30) queue: dispatch_queue_create("eventQueue", NULL) usingBlock: ^(CMTime time) { 
loopCount = (int)(CMTimeGetSeconds(time) * 30); 
if(loopCount < [dataPointArray count]) { 
    dispatch_sync(dispatch_get_main_queue(), ^{ 
    [graphLayer setNeedsDisplay]; 
    }); 
} 
}]; 

Cảm ơn!

Trả lời

0

Nếu bạn đang nói về cửa sổ chrome được hiển thị bởi MPMoviePlayer thì tôi sợ bạn đang tự mình tạo giao diện người dùng này.

AFAIK không có cách nào để đạt được hành vi thời gian bạn cần bằng khung công tác MediaPlayer, một khung công tác "chơi một số phương tiện" đơn giản. Bạn đang làm điều đúng bằng cách sử dụng AVFoundation.

Lá nào bạn cần tự tạo giao diện người dùng. Đề xuất của tôi sẽ là bắt đầu với một tệp XIB để tạo bố cục chung; thanh công cụ ở trên cùng với nút được thực hiện, chế độ xem lớn thể hiện chế độ xem phát lại tùy chỉnh (sử dụng AVPlayerLayer) và chế độ xem riêng để chứa các điều khiển của bạn.

Bạn sẽ cần phải viết một số mã điều khiển tùy chỉnh để tự động hiển thị/ẩn các điều khiển phát lại và thanh công cụ khi cần nếu bạn muốn mô phỏng giao diện người dùng MPMoviePlayer.

+0

Woa. câu trả lời này gần một năm sau câu hỏi, và vẫn được chấp nhận! Bravo. – Almo

0

Bạn có thể sử dụng https://bitbucket.org/brentsimmons/ngmovieplayer làm điểm bắt đầu (nếu nó tồn tại vào thời điểm bạn yêu cầu).

Từ trang dự án: "Sao chép nhiều hành vi của MPMoviePlayerViewController - nhưng sử dụng AVFoundation."

0

Bạn có thể muốn tìm kiếm AVSynchronizedLayer lớp học. Tôi không nghĩ rằng có rất nhiều trong hướng dẫn lập trình chính thức. Bạn có thể tìm thấy các bit thông tin tại đây và ở đó: subfurther, Otter Software.

Trong lập trình O'Really iOS 4 (hoặc 5), cũng có một tham chiếu ngắn về cách di chuyển hình vuông/dừng dọc theo một dòng đồng bộ với hoạt ảnh. Một bản trình diễn khác (không có nhiều mã) được hiển thị trong phiên WWDC 2011 Working with Media in AV Foundation.

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