iOS网络收音机

  • 摘要:    在iOS平台下播放直播流,需要用到解码编码等听起来很牛X的技术,自己也发现AppStore中有很多网络电台应用,但不知道人家是怎么实现的。经过在网上搜索、询问好友后,终于找到了一个很好的第三方解决方案,即百度媒体云。    好了闲话少说,进入正题:进入SDK下载界面,下载iOS开发包http://developer.baidu.com/wiki/index.php?title=docs/c
  •     在iOS平台下播放直播流,需要用到解码编码等听起来很牛X的技术,自己也发现AppStore中有很多网络电台应用,但不知道人家是怎么实现的。经过在网上搜索、询问好友后,终于找到了一个很好的第三方解决方案,即百度媒体云

        好了闲话少说,进入正题:

    1. 进入SDK下载界面,下载iOS开发包

      http://developer.baidu.com/wiki/index.php?title=docs/cplat/media/video/sdk

        注:我下载的包见下图,但是发现有些问题,具体啥问题在这不详细说了,如果你运行Demo也遇见这个问题的话,那就接着往下看iOS网络收音机_IOS

    2.添加媒体云包、相关框架到项目中(创建个新项目,按照下面的步骤来少走些弯路)

        1)开发者需要使用百度账号登录百度开发者中心注册成为百度开发者创建工程,方可获取应用ID、对应的API key(即:ak)及 Secret Key(即:sk)等信息。因为需要播放直播流,所以需要开启视频服务才能使用(见下图)

    iOS网络收音机_IOS

        2)媒体云包分为真机包和模拟器包,这个要看自己的情况进行添加,我的是真机运行(发现百度这个Demo,在真机上运行时木有问题的)。添加相关的框架:

        OpenAL.framework

        OpenGLES.framework

        libbz2.1.0.dylib

        libz.dylib

        AudioToolbox.framework

        Security.framework

        MobileCoreServices.framework

        CFNetwork.framework

        SystemConfiguration.framework

        AVFoundation.framework

        MediaPlayer.framework

        3)获取上面申请应用的API key(即:ak)及 Secret Key(即:sk)以备用 SDK 认证时必须传入ak及sk(只需前 16 位)参数。 即右上方API key SecretKey 详见下图:

    iOS网络收音机_IOS

        4)配置工程

     

           注:由于当前的 CyberPlayerController 只支持 armv7 架构,所以在导入相关静态库前,您需要在 Xcode 中配置您的 targets。选择 Build Settings->Architectures->Valid Architectures, 将该选项的 Debug/Release 键都置为 armv7(即去掉 armv7s 的支持)。 Build Active Architecture Only 设置为 NO。Xcode 中的 project不需要进行任何操作。详见下图:

    iOS网络收音机_IOS

        完成以上步骤,Build下,添加上上面已经准备好的API key(即:ak)及 Secret Key(即:sk),到了这里大部分任务已经完成了。下面开始敲代码了,下面的代码是我实现的一个RadioPlayer单例:

        RadioPlayer.h文件

    #import <Foundation/Foundation.h>@interface RadioPlayer : NSObject{}@property (nonatomic,assign) BOOL isPlayed;//是否已经播放状态值+ (RadioPlayer *) sharedInstance;//单例- (void) setRadioUrlString:(NSString *) urlString;//设置播放地址- (void) play;//开始播放- (void) stop;//停止播放@end

     

    RadioPlayer.m文件

    #import "RadioPlayer.h"#import <AVFoundation/AVFoundation.h>#import "CyberPlayerController.h"CyberPlayerController *cbPlayerController;//播放器控制器@implementation RadioPlayerstatic RadioPlayer *sharedInstance = nil ;+ (RadioPlayer *) sharedInstance{    static dispatch_once_t onceToken;// 锁    dispatch_once (&; onceToken, ^ {// 最多调用一次        sharedInstance = [[self  alloc] init];    });    return  sharedInstance;}// 当第一次使用这个单例时,会调用这个init方法。- (id) init{    self = [super init];        if (self) {        //后台播放设置        AVAudioSession *session = [AVAudioSession sharedInstance];        [session setActive:YES error:nil];        [session setCategory:AVAudioSessionCategoryPlayback error:nil];                //初始化播放器        NSString *msAK = @"自己的msAK;        NSString *msSK = @"自己的msSk;        [[CyberPlayerController class] setBAEAPIKey:msAK SecretKey:msSK];        cbPlayerController = [[CyberPlayerController alloc] init];    }        return self;}//设置播放地址- (void) setRadioUrlString:(NSString *) urlString{    NSURL *url = [NSURL URLWithString:urlString];    if (!url) {        url = [NSURL URLWithString:[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];    }    [cbPlayerController setContentURL:url];}//开始播放- (void) play{    switch (cbPlayerController.playbackState) {        case CBPMoviePlaybackStateStopped:        case CBPMoviePlaybackStateInterrupted:            //初始化完成后直接播放视频,不需要调用play方法            cbPlayerController.shouldAutoplay = YES;            //初始化视频文件            [cbPlayerController prepareToPlay];                        sharedInstance.isPlayed = YES;            break;        default:            [cbPlayerController prepareToPlay];            sharedInstance.isPlayed = YES;            break;    }}//停止播放- (void) stop{    [cbPlayerController stop];    sharedInstance.isPlayed = NO;}@end

     

    播放音频

        RadioPlayer *radioPlayer = [RadioPlayer sharedInstance];    [radioPlayer setRadioUrlString:@"mmsh://124.128.18.76/jiaotong"];//注意 mms 改为 mmsh    [radioPlayer play];//播放    //[radioPlayer stop];//停止

     

     

  • 以上是iOS网络收音机的内容,更多 appstore 解决方案 网络收音机 百度 第三方 的内容,请您使用右上方搜索功能获取相关信息。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值