设为首页 加入收藏

TOP

【原】iOS学习45之多媒体操作(一)
2017-10-13 10:28:46 】 浏览:4548
Tags:iOS 学习 多媒体 操作

1. 音频

 1> 音频实现简述

  iOS 里面共有四种专门实现播放音频的方式:

  •  System Sound Services(系统声音服务)

  •  OpenAL(跨平台的开源的音频处理接口)

  •  Audio Queue Services(播放和录制音频服务)

  •  AVAudioPlayer(高级音频播放器)

 2> System Sound Services(系统声音服务)

  ① System Sound Services最底层也是最简单的声音播放服务,通过调用 AudioServicesPlaySystemSound 这个函数就可以播放一些简单的音频文件

  ② 局限性:

   1.  声音长度要小于30秒

   2.  格式:IMA4

   3.  不能控制播放的进度

   4.  调用方法后立即播放声音

   5.  没有循环播放立体声音播放

  ③ 实例代码

    CFBundleRef mainBundle;

    SystemSoundID soundFileObject;

    mainBundle = CFBundleGetMainBundle ();

    CFURLRef soundFileURLRef  = CFBundleCopyResourceURL (mainBundle, CFSTR ("蔡琴 - 爱断情伤"), CFSTR ("wav"), NULL);

    AudioServicesCreateSystemSoundID (soundFileURLRef, &soundFileObject);

    AudioServicesPlaySystemSound(soundFileObject);

 3> OpenAL

  ① 简介

   OpenAL 是一套跨平台开源音频处理接口

   最适合开发游戏的音频

   OpenAL 包含三个 实体:Listener(听者)Source(音源)、 Buffer(缓存)

   Audio Queue Services 主要用来实现录制音频,为了简化音频文件的处理,通常还需要使用到 AudioFileServices

  ② 开发步骤

   1.获取device

   2.将context关联到device

   3.将数据放入buffer

   4.将buffer链接到一个source

   5.播放source

  OpenAL资料网址: http://www.devdiv.com/thread-19636-1-1.html
            http://www.cocoachina.com/bbs/read.php?tid-112679-page-1.html

  相对底层的 API参考:http://blog.csdn.net/midfar/article/details/7233454

 4> AVAudioPlayer简介

  我们可以把 AVAudioPlayer 看作是一个高级的播放器,它支持广泛的音频格式,如下:

  • AAC

  • AMR(AdaptiveMulti-Rate, aformatforspeech)

  • ALAC(AppleLossless)

  • iLBC(internetLowBitrateCodec, anotherformatforspeech)

  • IMA4(IMA/ADPCM)

  • linearPCM(uncompressed)

  • MP3(MPEG-1audiolayer3)

 5> AVAudioPlayer优势

  • 支持更多的格式

  • 可以播放任意长度的音频文件

  • 支持循环播放

  • 可以同步播放多个音频文件

  • 控制播放进度以及从音频的任意一点开始播放

 6> AVAudioPlayer开发步骤

  • 步骤一:AVAudioPlayer 包含在 AVFoundation 框架中,所以开发的时候首先导入音频的框架 AVFoundation.framework

  引入头文件

#import <AVFoundation/AVFoundation.h>
  • 步骤二: AVAudioPlayer 的初始化的时候需要给一个播放文件

  AVAudioPlayer  *avAudioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:文件路径 error:nil];

  • 步骤三:重要属性

  设置初始音量大小 audioPlayer.volume = 1;(0.0 ~ 1.0)

  设置音乐播放次数  audioPlayer.numberOfLoops = -1;(只要是负数都是循环播放)

  播放进度 audioPlayer.currentTime = 0;

  • 步骤四:重要方法

  预播放

[audioPlayer prepareToPlay];

  播放

[audioPlayer play];

  暂停

[audioPlayer pause];

  停止

[audioPlayer stop];
  • 步骤五:代理方法

  协议:AVAudioPlayerDelegate

   播放完成会调用的代理方法

    - (void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag;

   播放解码失败

    - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error;

  7> 简单代码实例:

// 懒加载
- (AVAudioPlayer *)player
{
    if (_player == nil) {
        
        NSString *urlString = [[NSBundle mainBundle] pathForResource:@"南征北战 - 骄傲的少年" ofType:@"mp3"];
        
        NSURL *url = [NSURL fileURLWithPath:urlString];
        
        _player = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];
        
        _player.delegate = self;
        
        // 设置默认的音量
        _player.volume = 0.5;
    }
    return _player;
}

// 播放按钮响应事件
- (IBAction)play:(id)sender
{
    [self.player play];
}

// 暂停按钮响应事件
- (IBAction)pause:(id)sender
{
    [self.player pause];
}

// 停止按钮响应事件
- (IBAction)stop:(id)sender
{
    [self.player stop];
}

// 音量滑竿响应事件
- (IBAction)changeVolume:(UISlider *)sender
{
    self.player.volume = sender.value;
}

   在我的github上有一个较完善的练习代码,有兴趣的小伙伴可以看看!

 8> 音频的后台播放

  • 首先要修改配置文件,在 Info.plist 文件
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇网络请求相关小结2 下一篇安装pods 遇到的坑

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目