首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将音频从服务器流式传输到iPhone

将音频从服务器流式传输到iPhone
EN

Stack Overflow用户
提问于 2008-12-21 20:23:07
回答 4查看 21.7K关注 0票数 17

我希望将服务器上的一些音频文件流式传输到我正在编写的iPhone客户端应用程序中。有些音频文件可能会相当大,即使在压缩之后也是如此。我的问题是,有没有一个Cocoa框架,可以帮助我缓冲音频,以便用户可以使用它,而其余的则被送到管道下?如果没有,谁能给我指出正确的方向,学习更多关于使用Objective-C/Cocoa实现这样的事情所需的技术?

关于从服务器<->客户端基础设施中缓冲和压缩音频的权威资源将是理想的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-12-21 23:17:46

Brad提到了我写的一篇通过HTTP传输音频的帖子。就是这个:Streaming and playing an MP3。我不想成为一个链接到他自己的博客的人,但它确实解决了你的问题。

至于这个问题有多难解决,你会注意到我已经对这篇文章做了4次更新(比我做过的任何其他事情都多),修复了线程错误、内存泄漏和网络缓冲问题。有很多东西需要精确地正确处理。

票数 24
EN

Stack Overflow用户

发布于 2012-01-07 05:52:09

MPMoviePlayerController可以播放音频文件。如果您使用内容url (例如,这可以是服务器上的Mp3文件)初始化对象,它将流式传输该文件并播放它。

初始化过程如下所示:

代码语言:javascript
复制
NSURL *theURL = [NSURL urlWithString:@"http://yourdomain.com/yourmediafile.mp3"];

MPMoviePlayerController* yourPlayerController = [[MPMoviePlayerController alloc] initWithContentURL:theURL];

从那里你可以弹出一个播放视图,它将显示一个滑块,用于在内容中滚动,它将填充滑块作为内容缓冲区。

代码语言:javascript
复制
[yourPlayerController shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
[self presentMoviePlayerViewControllerAnimated:yourPlayerController];

或者你可以让它播放并创建你自己的UI:

代码语言:javascript
复制
[yourPlayerController.moviePlayer play];

这种播放方法会在屏幕锁定时切断音频,除非您在info.plist文件中告诉应用程序在后台运行。

票数 5
EN

Stack Overflow用户

发布于 2008-12-21 22:29:08

不幸的是,你将有一些工作在你面前。去年夏天,我不得不为一个iPhone项目这么做。您需要的大部分内容都在AudioToolbox框架中的音频队列服务中。

使用音频队列服务有点棘手,你必须实现一堆回调来告诉它在数据包离开网络后如何处理它们。

有人,我认为Matt Gallagar,在一个博客上有一些样例代码,这是可以的,在Apple的Core Audio邮件列表上有一堆东西。

我确实发现我最终不需要在NSURL连接上进行中继来完成网络部分,因为我的didrecievedata委托方法没有足够频繁地触发。

很抱歉,我不能在这里插入几行代码作为示例,但我编写的类大约有400行。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/384900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档