如何播放服务器上的在线视频
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
【讨论】:
以上是关于如何播放服务器上的在线视频的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Cordova iOS 应用程序中播放 html 5 视频?