java 实现ios流媒体_iOS在线广播流媒体问题

我必须创建提供在线广播流(icecast)的应用程序,最好是.ogg格式 . 所以我有下一个问题:

如何播放 .ogg 格式的音频流?有没有支持的课程?因为我找不到任何东西,所以我认为没有很多按位操作就不可能使用 CFNetwork , CoreAudio , AudioToolbox 等 . (I don't look at cocos2d, because it's ridiculous) Am i wrong?

我现在正在播放mp3流(对我来说没有.ogg的可能性) . 我尝试使用 AVPlayer , MPMovieMediaController , AudioSreaming lib by MattGallagher and by DigitalDJ ,这些解决方案都不能为我提供元数据访问 .

For AVPlayer:

-(void)playButtonPressed:(id)sender

{

NSURL *grindURL = [NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];

grindFMPlayer = [[AVPlayer alloc] initWithURL:grindURL];

[grindFMPlayer.currentItem addObserver:self forKeyPath:@"status" options:0 context:nil];

AVPlayerItem *item = grindFMPlayer.currentItem;

[grindFMPlayer play];

}

-(void)stopButtonPressed:(id)sender

{

AVURLAsset *ass = grindFMPlayer.currentItem.asset;

NSArray *arr = [ass commonMetadata];

NSArray *it_meta = [grindFMPlayer.currentItem timedMetadata];

[grindFMPlayer pause];

}

arr 和 it_meta count 总是 0 ,没有歌曲\艺术家\任何元数据 .

对于 MPMovieMediaController 也是如此,从未调用metadataUpdate

streamAudioPlayer = [[MPMoviePlayerController alloc]

initWithContentURL:[NSURL URLWithString:@"http://radio.goha.ru:8000/grind.fm"];

streamAudioPlayer.movieSourceType = MPMovieSourceTypeStreaming;

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(MetadataUpdate:) name:MPMoviePlayerTimedMetadataUpdatedNotification object:nil];

[streamAudioPlayer play];

并在停止按钮方法:

timedMeta = [streamAudioPlayer timedMetadata];

if ([streamAudioPlayer timedMetadata]!=nil && [[streamAudioPlayer timedMetadata] count] > 0)

{

NSLog(@"metadata count = %d", [[streamAudioPlayer timedMetadata] count]);

for (MPTimedMetadata *metadata in [streamAudioPlayer timedMetadata])

{

NSLog(@"description %@", metadata.allMetadata);

if ([[metadata.allMetadata valueForKey:@"key"] isEqualToString:@"title"])

{

NSString *text = [metadata.allMetadata valueForKey:@"value"];

NSString* filename = text;

}

}

}

[streamAudioPlayer timedMetadata] 总是没事 .

我试过了

但仍然没有运气获得当前的播放曲目信息,只能在SHOUTcast app中获得

1st Metadata = 'StreamTitle=' ,

2nd metadata = '' 和 bitrate = '128000'

(所以我想我必须处理来自 http Headers 响应的字节或类似的东西?但wtf,它是shoutcast元数据,但我的radiostream是icecast . 不知道)

我将不胜感激任何帮助!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值