使用 MPMoviePlayerViewController 播放音频
Posted
技术标签:
【中文标题】使用 MPMoviePlayerViewController 播放音频【英文标题】:playing audio with MPMoviePlayerViewController 【发布时间】:2011-08-08 19:11:10 【问题描述】:参考 ios TabController 应用程序...
Apple 文档声明 AVAudioPlayer 类不支持基于 HTTP URL 的流式音频。 AVAudioPlayer 仅播放嵌入在 iApp 中的音乐,并以 file:// 作为 url。
鉴于此,我确实使用 MPMoviePlayerViewController 来播放它可以处理的这些网络存储的音频/mp3 文件。
这绝对有效。我从带有歌曲歌词的 UIView 开始。在这个 UIView 的最底部是一个“播放”按钮。用户点击此按钮,播放音频/mp3;然而,音频/QuickTime (( Q )) 图形出现在前台,歌词消失并一直消失,直到用户点击“完成”。我想要发生的是音频/mp3 在后台播放,歌词留在前面。
顺便说一句,我真的不需要看到“完成”按钮,因为用户只需选择另一个选项卡即可停止音频。
显然,将 AV 文件转到后台是有意义的,因为 MPMoviePlayerController 对象旨在播放视频,并且视频应该出现在最前面。这是一致的,因为音频也进入了背景..除了我需要一种方法来阻止音频/QuickTime (( Q )) 图形出现在前面。
我确实插入了代码来确定它是音频文件 (mp3) 还是视频文件 (mp4)。到目前为止一切顺利......然后如果它是一个音频文件,在我的实际播放片段中,我有:
if ( NSClassFromString(@"MPMoviePlayerViewController") )
if (!isAudioFile)
[senderViewController
presentMoviePlayerViewControllerAnimated:moviePlayerViewController_];
[moviePlayerController_ play];
它确实有效,即我实际上在后台听到了mp3,歌词在前面并且音频/QuickTime((Q))图形不显示......
但是,发生的事情太可怕了,也就是说,“完成”按钮显示在歌词上我谈到了某种未知数???那里的字母。
【问题讨论】:
您应该从问题中删除解决方案,然后将其添加为答案(如果解决了您的问题,则接受它)。 谢谢,但恐怕“高能”肯定不喜欢我将问题与正确答案结合起来的方法。他们非常不喜欢它,以至于我被“列入黑名单”......我根本无法提出任何问题。以前从未听说过“列入黑名单”的前大学教授!当我教计算机信息系统时,这是我采用的方法,并且通过口香糖对学生来说效果很好。 我的意思是您应该编辑您的问题以使其中没有答案,然后选择底部的“回答您的问题”以将解决方案发布为答案。这是首选,因为它与站点其余部分的一般格式相匹配,问题与答案分开。如果您由于某种原因无法做到这一点,我可以为您做到。 我可以,因为我就是这样做的。不过,这没有实际意义,因为我不能再提问了。当我想不出提交到应用商店的多个步骤时,它就开始了。 *** 认为这个问题和我的非常温和的咆哮足以让我开除。我去了 iphonedevsdk.com。多么不同的语气……不是居高临下,不是“如果你不遵守,我会坐在你身上”。但是,对于准确的答案和多个“不要惊慌,约翰”非常有帮助;它会聚在一起;坚持下去'。它已经融合在一起,现在我不敢相信我对应用商店如此愚蠢。 别担心;我帮你修好了。 【参考方案1】:以下答案来自对问题的编辑:
if ( NSClassFromString(@"MPMoviePlayerViewController") )
if (!isAudioFile)
[senderViewController
presentMoviePlayerViewControllerAnimated:moviePlayerViewController_];
else
[moviePlayerController_ setControlStyle:MPMovieControlStyleNone];
FWIW,我真的不需要“完成”按钮,因为只要我转到另一个选项卡,无论是新音乐还是视频,最初播放的音乐都会停止,而新的 AV 文件就会开始。
【讨论】:
以上是关于使用 MPMoviePlayerViewController 播放音频的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)