我正在构建一个应用程序,在这里我想播放来自url的视频,比如Youtube、Vimeo、Direct url。我使用AVPlayer制作自定义播放器,从视频剪辑的直接url(如www.abc/play.mp4)播放视频。但后来我在玩youtube时遇到了一个大问题
播放YouTube视频与MPMoviPlayerController,而不是UIWebView
不使用UIWebView从youtube链接播放视频
所以我就用了这个代码:
NSString *youTubeVideoHTML = @"<html><head><style>body{margin:0;}</style></head> <body> <div id=\"player\"></div> <script> var tag = document.createElement('script'); tag.src = 'http://www.youtube.com/player_api'; var firstScriptTag = document.getElementsByTagName('script')[0]; firstScriptTag.parentNode.insertBefore(tag, firstScriptTag); var player; function onYouTubePlayerAPIReady() { player = new YT.Player('player', { width:\'100%%\', height:'200px', videoId:\'%@\', events: { 'onReady': onPlayerReady } }); } function onPlayerReady(event) { event.target.playVideo(); } </script> </body> </html>";
NSString *html = [NSString stringWithFormat:youTubeVideoHTML, videoId];
self.embedded_player_view.mediaPlaybackRequiresUserAction = NO;
[self.embedded_player_view loadHTMLString:html baseURL:[[NSBundle mainBundle] resourceURL]];
现在,当我从tableview点击youtube/Vimeo视频链接时,它将使用默认播放器即quicktime播放器播放视频。它不会在UIWebview框架内运行视频。但是我想在屏幕的前半部分显示视频,即我的UIWebview框架。可能吗?
在我的应用程序中,我可以看到:
MusicTube和PlayTube也是如此。
还是有其他方法可以达到同样的效果?任何帮助都将不胜感激。提前谢谢。
我用这门课就是为了这个。
您在UIViewController
中看到的视频可以按当前大小播放。
这是我使用过的唯一代码:
UIView *videoContainerView = [[UIView alloc]initWithFrame:CGRectMake(0, 50, 320, 200)];
[self.view addSubview:videoContainerView];
XCDYouTubeVideoPlayerViewController *videoPlayerViewController = [[XCDYouTubeVideoPlayerViewController alloc] initWithVideoIdentifier:@"_OBlgSz8sSM"];
[videoPlayerViewController presentInView:videoContainerView];
[videoPlayerViewController.moviePlayer play];
对于Vimeo player,您可以检查此链接https://github.com/lilfaf/YTVimeoExtractor它在real player中播放视频,如果您想在uiwebview中运行视频,下面是相关代码https://stackoverflow.com/a/15918011/1865424.
在"urlStr"传递你YouTube视频的URL。
//In .h file
UIWebView *videoView;
// In .m file
videoView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 385)];
[self embedYouTube :urlStr frame:CGRectMake(0, 0, 320, 385)];
[self.view addSubview:videoView];
// methos to embed URL in HTML & load it to UIWebView
- (void)embedYouTube:(NSString*)url frame:(CGRect)frame
{
NSString* embedHTML = @”\
<html><head>\
<style type=\”text/css\”>\
body {\
background-color: transparent;\
color: white;\
}\
</style>\
</head><body style=\”margin:0\”>\
<embed id=\”yt\” src=\”%@\” type=\”application/x-shockwave-flash\” \
width=\”%0.0f\” height=\”%0.0f\”></embed>\
</body></html>”;
NSString* html = [NSString stringWithFormat:embedHTML, url, frame.size.width, frame.size.height];
if(videoView == nil) {
videoView = [[UIWebView alloc] initWithFrame:frame];
[self.view addSubview:videoView];
}
[videoView loadHTMLString:html baseURL:nil];
}
考特西:-http://nanostuffs.com/Blog/?p=641
希望这能帮到你。如果这不能帮助你,请查看以下链接:-
http://blog.softwareispoetry.com/2010/03/how-to-play-youtube-videos-in-your.html
https://gist.github.com/darkredz/5334409
http://maniacdev.com/2012/02/open-source-library-for-easily-playing-a-youtube-video-in-an-mpmovieplayer
如果你想玩youtube,这里有一个链接到github上的youtube播放器项目,它非常有用。是的,可以在uiwebview中播放它,只需给webview提供url并告诉它加载,它不应该在默认播放器中打开,至少我相信是这样。