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

Posted

技术标签:

【中文标题】如何播放服务器上的在线视频【英文标题】:how to play online video those are on server 【发布时间】:2013-02-04 06:45:52 【问题描述】:

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

谁能建议如何处理这种情况?

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

【问题讨论】:

你可以做的同样的事情是,用你的video_url传递NSURL对象,就是这样:) 获取服务器上视频的url,并将contentURL设置为MPMoviePlayerController。 @yebw :那样不行…… 【参考方案1】:

您可以使用 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;

【讨论】:

这将帮助您从 youtube 获取视频,不适合直接从服务器播放简单的 mp4 视频,可以通过将视频的确切服务器 url 提供给 MPMoviePlayerController 来轻松完成。您的回答不'不符合问题.. @iphonic 我知道使用 MPMoviePlayerController 可以轻松完成,但我已经在我的应用程序中使用此代码播放视频,我可以使用此代码进行许多自定义。出于某种原因,这很好,因此我们可以将其用作 MPMoviePlayerController 的选项。 但是@iphonic 首选方法是使用 MPMoviePlayerController。 @Dilip :一个问题,那么它也能做流媒体视频吗?因为我不希望用户等到下载视频... @FahimParkar 是的,它将完成流式视频的工作。并且不会下载所有视频。我正在从我的项目中的服务器上使用此代码进行流式传输。【参考方案2】:

我们可以通过在 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

【讨论】:

以上是关于如何播放服务器上的在线视频的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ionicApp 中播放托管在另一台服务器上的视频

如何在 Cordova iOS 应用程序中播放 html 5 视频?

如何通过触摸uitableviewcell中视频的视频缩略图上的按钮来播放视频?

youtube.com 上的视频如何在 iOS 上自动播放

无论如何要在 ipad 上自动播放在线内容音频文件

在 Android 上的 WebView 中播放本地视频