2012-07-20 31 views
8

Tôi có một ứng dụng thử nghiệm sử dụng AVPlayer để phát video được chỉ định bởi danh sách phát m3u8 HLS. Danh sách phát chỉ định một số luồng âm thanh thay thế, tương tự như danh sách phát mẫu "Liệt kê 10" do Apple tìm thấy tại đây: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html#//apple_ref/doc/uid/DTS40012238-CH1-ALTERNATE_MEDIA Ứng dụng cần có khả năng chuyển đổi giữa các luồng âm thanh thay thế trong khi video đang phát. Ví dụ: ứng dụng sẽ có thể chuyển đổi giữa các luồng âm thanh tiếng Anh, tiếng Pháp và tiếng Tây Ban Nha bằng các nút nhấn của người dùng trong ứng dụng trong khi video đang phát.Cách chuyển đổi giữa các luồng âm thanh thay thế bằng AVPlayer

Các lớp và phương pháp AVFoundation nào sẽ được AVPlayer và các đối tượng liên quan của nó sử dụng để chuyển đổi giữa các luồng âm thanh được chỉ định trong danh sách phát m3u8? Tôi đã xem tài liệu của lớp AVFoundation nhưng không thấy cách thực hiện điều này.

Một liên kết đến một số mã mẫu cho biết cách thực hiện việc này sẽ tuyệt vời. Tôi đã tìm kiếm trên web thông tin này mà không thành công. Cảm ơn vì đã giúp đỡ.

+0

Tôi cũng tò mò về điều này, nhưng đối với video thay thế tương tự như "Liệt kê 12" trên: http://developer.apple.com/library/ios/#technotes/tn2288/_index.html. Tôi tưởng tượng bất cứ câu trả lời nào bạn tìm thấy sẽ giúp tôi – user1636983

Trả lời

18

Để phát lại m3u8 bằng AVPlayer, có vẻ như bạn không thể sử dụng AVAsset để xây dựng một AVPlayerItem. Bạn cần phải xây dựng một AVPlayerItem từ URI trực tiếp. Khi tạo một AVPlayer với AVPlayerItem này, và sau đó KVO nghe trên thuộc tính @ "status", bạn sẽ có một tài sản trong số [[avPlayerInstance currentItem] asset] nếu trạng thái là AVPlayerStatusReadyToPlay. Điều này được mô tả ở trang 20 của AV Foundation Programming Guide.

Để thay đổi âm thanh để dự khuyết khác nhau sử dụng:

AVMediaSelectionGroup *audioSelectionGroup = [[[avPlayerInstance currentItem] asset] mediaSelectionGroupForMediaCharacteristic: AVMediaCharacteristicAudible]; 

NSLog(@"audioSelectionGroup: %@", audioSelectionGroup); 

// [audioSelectionGroup options] // Array of the options in the group above. 

Và chọn AVMediaSelectionOption (kênh âm thanh bạn muốn) với:

[[avPlayerInstance currentItem] selectMediaOption:avMediaSelectionOptionInstance] inMediaSelectionGroup: audioSelectionGroup]; 

Cùng sẽ làm việc cho video.

Điều này được mô tả trong phần "Chọn phương tiện âm thanh và phụ đề theo ngôn ngữ và các tiêu chí khác" trong số AV Foundation Release Notes for IOS 5 (phần thứ 3).

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