我只在iPad上看到这个问题 . 同样的东西在iPhone上运行正常 .
我在UIWebView中打开我的应用程序的URL . 如果URL是普通网页,它可以正常工作 . 但是,如果URL是远程视频/音频文件的URL,则UIWebView会打开默认播放器,这又是好的 .
现在,当我关闭UIWebView(通过点击播放器上的完成按钮)时,流媒体不会停止,音频/视频会在后台继续播放(我看不到它,但它确实在后台继续播放,可以听到它) . 创建webview的UIViewController也被解除分配(我在dealloc方法中放入了一个日志语句),但是流不会停止 .
有人可以帮我解释为什么会发生这种情况吗?当UIWebView关闭时,如何停止音频/视频流?
谢谢 .
10 回答
我有同样的问题,但在这种情况下,不会停止播放的视频是使用object / embed方法嵌入的Youtube视频 .
我花了很长时间试图弄清楚如何让视频停止播放,我找到的唯一解决方案是在解除视图之前告诉UIWebView加载空白页:
编辑(2015-05-12):如下面的@chibimai所述,this answer by alloc_iNit works along the same lines但由于我的答案来自5年前 - 而他的唯一4 - - 相关答案可能更适用 . 我不再做iPhone开发工作,所以我无法确定哪种方式更好 .
我也发现这种行为只是因为Web视图尚未发布 .
我知道这是一个非常古老的线程,但为了像我这样的新开发者 .
我的场景是:我使用的是分割控制器,主控制器上的媒体列表和详细控制器部分中的播放器
我遇到了同样的问题并尝试了各种解决方法 .
我终于弄清楚问题很简单,我在我的主人手中持有细节控制器的引用,并且没有释放早期的细节控制器 . 在正确位置的主人的简单版本解决了这个问题 .
我正在研究同样的问题 . 我发现如果你在脚本标签中定义这样的东西:
然后在你的UIViewController中,添加:
它似乎试图暂停/停止视频几秒钟,但随后您听到音频继续播放!
更新!
这是媒体播放器的一般错误 . 您必须将播放时间设置为-1才能使其真正停止 .
我刚刚遇到一个问题,一个mp4文件在网页中自动打开媒体播放器而无法关闭它 - “完成”按钮只能在视频全屏模式下看到并且只是关闭全屏,所以我无法返回到网页而不向导航栏添加“后退”按钮 . (在iPhone上,视频在单独的视图中打开,“完成”按钮带回源页面的WebView)
帮助我的解决方法是在单独的媒体播放器中打开视频文件 .
赶上打开一个MP4文件
哪里
在模型视图中的媒体播放器中打开带有URL的视频
不要忘记将MediaPlayer.framework添加到项目并导入
为了建设项目
PS . 非常感谢Viktor Gubrienko的解决方案
实际上,我更喜欢使用null链接来解决问题 . 像这样:
感谢你在这个问题上的线程,我能够找到一个完全解决问题的解决方案,并且我在我的IPad上测试了它,而不仅仅是模拟器 . 这也解决了音频播放的问题 . 这不是永久决议,而是一项有效的解决方案 .
方法概述:
基本上所需要的只是将一个简短的音频文件发送到webView . 我制作了IMac submarine.m4v文件的副本,我调用了ping.m4v并将其添加到资源文件夹中的xcode项目中 .
然后在我希望视频/音频停止时,我执行以下步骤:
现在你还必须处理错误"204" . 错误204似乎只是一个警告说webView将处理此音频文件 . 为了处理错误,我将这一行(见>>>)添加到
didFailLoadWithError
最后,在我显示下一个音频/视频之前,我转向
webView.hidden = FALSE
. 这样,声音文件的小播放栏不会显示在显示屏上 . 只有一个软ping音......任何音频文件都会...我希望这帮助...
这就是我使用的 . 它会记录此错误“取消激活已运行I / O的音频会话 . 在停用音频会话之前,应停止或暂停所有I / O.”但确实停止播放(淡出)音频文件并记住播放位置 .
由于Web视图尚未发布,因此视频会在后台继续播放Web视图 .
因此,您只需使用下面的代码就可以发布Web视图,这对我来说很合适 .
我希望这有帮助...
在我的情况下使用 loadHTMLString 而不是loadRequest与@ "about:blank",修复macOS上的问题