我正在将iOS视频嵌入到iOS应用的UIWebView
中。我在this YouTube blog post上使用“方法2”来嵌入视频。这很好,除了因为iOS管理媒体播放器,我无法确定视频是播放还是播放完成。我不想在视频播放过程中将视图与另一个视图交换,但我没有看到确定该视图的好方法。有任何想法吗?如果有一种方法可以获得JavaScript回调,那么这将起作用,或者如果有一种方法可以使用HTML5 <video>
标签嵌入YouTube视频,那也可以(我尝试过并且没有获得成功)。iOS上带有嵌入式YouTube视频的媒体回调
回答
你可以注入的JavaScript成UIWebView
(见http://iphoneincubator.com/blog/windows-views/how-to-inject-javascript-functions-into-a-uiwebview)......其他有趣的东西关于JavaScript和UIWebView
可以发现here和here。
请尝试将此与此实验性的YouTube API一起使用(请参阅http://code.google.com/apis/youtube/iframe_api_reference.html)......这应该能够让您得到您想要的。
另一个有用的资源,这个从javascript到你的代码回调是here。
对于iPhone我使用了一些棘手的方法。当视频模式视图控制器被解散时,您可能会收到通知。
-(void) onUIWebViewButtonTouch:(id) sender
{
self.isWatchForNotifications = YES;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(windowNowVisible:)
name:UIWindowDidBecomeVisibleNotification
object:self.view.window
];
}
- (void)windowNowVisible:(NSNotification *)note
{
if (isWatchForNotifications == YES)
{
//modal viewcontroller was dismissed
}
self.isWatchForNotifications = NO;
}
这可行,但只适用于iPhone全屏播放的视频。 – 2012-01-18 15:16:50
只需为MPAVControllerPlaybackStateChangedNotification添加观察者即可。
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playbackStateDidChange:)
name:@"MPAVControllerPlaybackStateChangedNotification"
object:nil];
然后开始听:
- (void)playbackStateDidChange:(NSNotification *)note
{
NSLog(@"note.name=%@ state=%d", note.name, [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue]);
int playbackState = [[note.userInfo objectForKey:@"MPAVControllerNewStateParameter"] intValue];
switch (playbackState) {
case 1: //end
;
break;
case 2: //start
;
break;
default:
break;
}
}
探索其他国家,如果你很好奇。另外大家感兴趣的一群其他通知可以注册即可查看所有:
CFNotificationCenterAddObserver(CFNotificationCenterGetLocalCenter(),
NULL,
noteCallbackFunction,
NULL,
NULL,
CFNotificationSuspensionBehaviorDeliverImmediately);
然后检查什么是未来的:
void noteCallbackFunction (CFNotificationCenterRef center,
void *observer,
CFStringRef name,
const void *object,
CFDictionaryRef userInfo)
{
NSLog(@"notification name: %@", name);
NSLog(@"notification info: %@", userInfo);
}
玩得开心!
这种方法可以让我获得95%的体验,但是因为我同时在屏幕上显示多个YouTube播放器,所以不会让我看到哪个视频开始播放。虽然谢谢! – 2012-01-26 01:30:26
您可以从头文件解码更多通知:https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/MediaPlayer.framework/MPAVController.h MPAVControllerItemPlaybackDidEndNotification – 2013-03-08 12:53:40
- 1. iOS中嵌入YouTube视频
- 2. 嵌入式视频youtube
- 3. 流媒体Youtube视频
- 4. 嵌入YouTube视频
- 5. 嵌入youtube视频
- 6. 从页面上的嵌入式YouTube视频获取youtube链接?
- 7. 嵌入的YouTube视频pregreplace
- 8. 嵌入最近上传的YouTube视频
- 9. 如何在YouTube视频嵌入形式获得从Youtube缩略图嵌入形式的Youtube视频
- 10. 播放带或不带Flash的嵌入式YouTube视频,带或不带Javascript
- 11. 适用于YouTube嵌入式视频的iOS 6.0+自转
- 12. iOS版的YouTube嵌入式视频帧问题
- 13. 前贴式广告是否出现在iOS上的嵌入式YouTube视频中?
- 14. iOS上使用Ionic/Cordova嵌入youtube视频问题的谜题
- 15. Youtube嵌入式视频白色区域
- 16. Youtube嵌入式视频无法启动
- 17. 嵌入式YouTube视频Jinja2 - Flask
- 18. 以通用方式嵌入YouTube视频
- 19. Youtube:嵌入式视频挤压
- 20. 在iPhone上嵌入Youtube视频问题
- 21. 将youtube视频嵌入到墙上
- 22. 在Joomla网站上嵌入YouTube视频
- 23. 麻烦嵌入YouTube视频
- 24. 嵌入youtube视频问题
- 25. 以markdown嵌入youtube视频?
- 26. 通过Youtube嵌入视频
- 27. SimpleMDE - Markdown嵌入Youtube视频
- 28. 流媒体视频到YouTube(API)
- 29. tinymce,youtube视频和媒体插件
- 30. 删除嵌入式视频上的“在YouTube上播放”覆盖
看到这个问题及其答案:http://stackoverflow.com/questions/8518719/how-to-receive-nsnotifications-from-uiwebview-embedded-youtube-video-playback – Till 2012-01-14 21:53:57