2012-01-14 42 views
16

Tôi đang cố phát một luồng video từ internet trên iPhone bằng cách nhấn một nút. Tôi đã sử dụng nhiều mẫu mã nhưng không có gì hiệu quả. Với mã này, nó sẽ mở ra một khung nhìn đen mà không có bất kỳ luồng video hoặc điều khiển nào trong đó. (Các dòng bản thân công trình.)Cách phát luồng video bằng MPMoviePlayerController trong iOS

NSURL *url = [NSURL URLWithString:@"http://MyStreamURL.com"]; 
MPMoviePlayerController *moviePlayer = [[MPMoviePlayerController alloc] initWithContentURL:url]; 
[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(moviePlayBackDidFinish:) 
              name:MPMoviePlayerPlaybackDidFinishNotification 
              object:moviePlayer]; 

moviePlayer.controlStyle = MPMovieControlStyleDefault; 
moviePlayer.shouldAutoplay = YES; 
[self.view addSubview:moviePlayer.view]; 
[moviePlayer setFullscreen:YES animated:YES]; 

Trả lời

27

Thay vì tạo ra một MPMoviePlayerController và nói thêm rằng quan điểm của bạn, nó có lẽ là đơn giản hơn để tạo ra một MPMoviePlayerViewController và trình bày rằng quan điểm điều khiển modally (kể từ khi bạn đang cố gắng để hiển thị video đầy đủ của bạn màn hình anyway). Sau đó, MPMoviePlayerViewController có thể quản lý việc trình chiếu video của bạn cho bạn.

MPMoviePlayerViewController *mpvc = [[MPMoviePlayerViewController alloc] initWithContentURL:url]; 

[[NSNotificationCenter defaultCenter] addObserver:self 
            selector:@selector(moviePlaybackDidFinish:) 
             name:MPMoviePlayerPlaybackDidFinishNotification 
             object:nil];  

mpvc.moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; 

[self presentMoviePlayerViewControllerAnimated:mpvc]; 
[mpvc release]; 

Trong phương thức đại diện moviePlayBackDidFinish bạn có thể loại bỏ trình điều khiển chế độ xem mô hình.

+0

Cảm ơn bạn rất nhiều! Tôi làm việc hoàn hảo. – derFalke

+2

Chỉnh sửa nhỏ mặc dù; bạn có nghĩa vụ phải sử dụng 'currentMoviePlayerViewControllerAnimated' thay vì' currentModalViewController'. Điều này sẽ dẫn đến hiệu ứng hoạt hình thích hợp mà người dùng mong đợi từ trình phát phim. – Till

+0

Cảm ơn @Till, tôi không biết điều đó. Tôi đã chỉnh sửa mẫu mã của mình để phản ánh thay đổi này. – jonkroll

2

Cần đề cập đến loại nguồn phim như streaming

moviePlayer.movieSourceType = MPMovieSourceTypeStreaming; 
1

Thêm khung làm việc AVFoundation trong Link Libraries phần

Trong file .h của bạn thêm

#import <MediaPlayer/MediaPlayer.h> 
@interface video_liveViewController : UIViewController<MPMediaPickerControllerDelegate,MPMediaPlayback> 

Trong file .m bạn

NSURL *movieURL = [NSURL URLWithString:@"http://172.31.17.252:1935/live/myStream/playlist.m3u8"]; 
movieController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieURL]; 
[self presentMoviePlayerViewControllerAnimated:movieController]; 
[movieController.moviePlayer play]; 
-1

chỉ cần thêm "MPMovieSourceTypeStreaming" vào "moviesourcetype"

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