如何播放服务器上的在线视频

时间:2013-02-04 06:45:52

标签: ios objective-c video ios6 video-streaming

我的服务器上有视频。我想在iPhone和iPad上播放这些视频。

有人可以建议如何处理这种情况吗?

我知道如何使用MPMoviePlayerController在我的项目中播放同一视频时播放视频。

2 个答案:

答案 0 :(得分:4)

您可以使用WebView播放视频。

在.h文件中添加以下代码:

#import <MediaPlayer/MediaPlayer.h>
    @interface VideoViewController : UIViewController<UIWebViewDelegate>
    @property (nonatomic, strong) UIWebView *playerView;

在.m文件中:

@synthesize playerView;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
         self.playerView = [[UIWebView alloc]initWithFrame:CGRectMake(10, 05, 300, 200)];
        [self.view addSubview:self.playerView];

    }
    return self;
}

-(void)viewDidLoad
{
    playerView.delegate = self;
    playerView.scrollView.scrollEnabled = NO;
    playerView.layer.cornerRadius = 5.0;
    playerView.clipsToBounds = YES;
}

在playBtn动作中输入此代码:

NSString *yourVideoLink = your video link;
NSString *yourlinkThumbnail = your video thumbnaillink;
[self playVideo: yourVideoLink withWebView:playerView andThumbnailLink: yourlinkThumbnail];


#pragma mark - Webview Delegates

- (void)webViewDidStartLoad:(UIWebView *)webView
{
    //[SVProgressHUD showWithStatus:@"Loading..."];
}
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //[SVProgressHUD dismiss];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
{
   // [SVProgressHUD dismiss];
}

#pragma mark - MoviePlayer Methods
- (void)playVideo:(NSString *)urlString withWebView:(UIWebView*)videoView andThumbnailLink:(NSString*)thumbnailImageLink {
    NSString *embedHTML = @"\
    <html><head>\
    <style type=\"text/css\">\
    body {\
    background-color: transparent;\
    color: white;\
    }\
    </style>\
    <script>\
    function load(){document.getElementById(\"yt\").play();}\
    </script>\
    </head><body onload=\"load()\"style=\"margin:0\">\
    <video id=\"yt\" src=\"%@\" \
    width=\"%0.0f\" height=\"%0.0f\" poster=\"%@\" autoplay controls></video>\
    </body></html>";
    videoView.backgroundColor   =  [UIColor redColor];
    NSString *html = [NSString stringWithFormat:embedHTML, urlString, videoView.frame.size.width, videoView.frame.size.height,thumbnailImageLink];
    [videoView loadHTMLString:html baseURL:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayStarted:) name:@"UIMoviePlayerControllerDidEnterFullscreenNotification" object:nil];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(videoPlayFinished:) name:@"UIMoviePlayerControllerDidExitFullscreenNotification" object:nil];
}

-(void)videoPlayStarted:(NSNotification *)notification{
    //self.isInFullScreenMode = YES;
}

-(void)videoPlayFinished:(NSNotification *)notification{
    // your code here
   // self.isInFullScreenMode = NO;
}

答案 1 :(得分:0)

我们可以通过在UIWebView上嵌入HTML来播放视频。

示例

    let height = UIScreen.main.bounds.size.height - 100
    let width = UIScreen.main.bounds.size.width
    let url: NSURL = NSURL(string: webURl)!
    let embedHTML = "<html><head><style type=\"text/css\">body {background-color: transparent;color: black;}</style><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=yes\"/></head><body style=\"margin:0\"><div><iframe src=\"\(webURl!)\" width=\"\(width)\" height=\"\(height)\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe></div></body></html>"
    webView.loadHTMLString(embedHTML as String, baseURL:url as URL )
    webView.contentMode = UIViewContentMode.scaleAspectFit