使用 AVPlayer 串流音频

Posted

技术标签:

【中文标题】使用 AVPlayer 串流音频【英文标题】:Stream Audio with AVPlayer 【发布时间】:2014-05-15 11:24:12 【问题描述】:

我正在尝试使用 AVPlayer 播放来自 URL 的音频,当在表格视图中选择了一行但它没有播放时。我做错了什么?

代码如下:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *streamingString = [NSString stringWithFormat:@"%@.json?client_id=fc886d005e29ba78f046e5474e3fdefb", [streamURLArray objectAtIndex:indexPath.row]];
    NSURL *streamingURL = [NSURL URLWithString:streamingString];
    NSLog(@"%@", streamingURL);
    AVPlayer *player = [AVPlayer playerWithURL:streamingURL];
    [player play];
    player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

当我记录它时,streamingURL 的一个例子是这样的。

http://api.soundcloud.com/tracks/146814101/stream.json?client_id=fc886d005e29ba78f046e5474e3fdefb

【问题讨论】:

这可能会有所帮助***.com/questions/15537080/… 【参考方案1】:

在您的 .h 文件中全局声明 AVAudioPlayer

喜欢这个AVPlayer *player;

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    NSString *streamingString = [NSString stringWithFormat:@"%@.json?client_id=fc886d005e29ba78f046e5474e3fdefb", [streamURLArray objectAtIndex:indexPath.row]];
    NSURL *streamingURL = [NSURL URLWithString:streamingString];
    NSLog(@"%@", streamingURL);
    player = [AVPlayer playerWithURL:streamingURL];
    [player play];
    player.actionAtItemEnd = AVPlayerActionAtItemEndNone;

【讨论】:

这段代码对我不起作用。你知道任何替代方法吗?【参考方案2】:

您会在 GitHub 周围找到大量的音频流套件。

https://github.com/tumtumtum/StreamingKit

https://github.com/muhku/FreeStreamer

https://github.com/mattgallagher/Audiostreamer

【讨论】:

【参考方案3】:

调用这个方法

[player prepareToPlay];

打电话之前

[player play];

可能对你有帮助。

【讨论】:

他使用的是 AVPlayer,而不是 AVAudioPlayer,因此“prepareToPlay”方法调用不起作用

以上是关于使用 AVPlayer 串流音频的主要内容,如果未能解决你的问题,请参考以下文章

同时播放两个 AVPlayer 音频文件时出现音频故障

使用avplayer播放音频时如何将音频缓存到本地

使用 AVPlayer 时防止背景音频静音

iOS音频篇:AVPlayer的缓存实现

使用 AVPlayer 播放音频时如何在 UIWebView 中暂停音频

使用 AVPlayer 在 iOS 中音频流期间的播放速度