iOS 用 AVPlayer 播放一个本地音频文件

  • 步骤

    • 第一步:在 Project - TARGETS - Project名 - Build Phases - Link Binary With Libraries,添加 AVFoundation.framework。
    • 第二步:创建一个 UIViewController 的子类 PlayerViewController。
    • 第三步:在 PlayerViewController 中添加一个属性 AVPlayer。
    • 第四步:在 PlayerViewController 的 viewDidLoad 方法中实现最主要的代码。

      关键代码

      .h

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      <code>#import<uikit uikit.h="">
      #import
      @interfacePlayViewController: UIViewController
      @property(strong, nonatomic) AVPlayer *player;
      @end
      </avfoundation></uikit></code>

      .m

      ?
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      <code>#import"PlayerViewController.h"
      @interfacePlayerViewController ()
      @end
      @implementationPlayerViewController
      - (void) viewDidLoad
      {
          [superviewDidLoad];
          AVAudioSession *session = [AVAudioSession sharedInstance];
          [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
          [audioSession setActive:YES error:nil];
          NSString *audioPath = [[NSBundle mainBundle] pathForResource:@"rem"ofType:@"wav"];
          NSURl *audioUrl = [NSURL fileURLWithPath:audioPath];
          NSError *playerError;
          _player = [[AVPlayer alloc] initWithContentsOfURL:audioUrl error:&playerError];
          if(_player === NULL)
          {
              NSLog(@"fail to play audio :(");
              return;
          }
          [_player setVolume:1];
          [_player play];
      }
      - (void) didReceiveMemoryWarning
      {
          [superdidReceiveMemoryWarning];
      }
      @end
      </code>

      几个重要的点:

      • 1.必须要用 AVAudioSession,否则木有声音啊。
      • 2.不要把 AVPlayer 当做局部变量(具体说在这个例子中,不要在 viewDidLoad 中定义)。
      • 3.要找好路径,这里用 mainBundle,不要搞错。

      AVAudioSession类由AVFoundation框架引入。每个IOS应用都有一个音频会话。这个会话可以被AVAudioSession类的sharedInstance类方法访问,如下:

      1. AVAudioSession *audioSession = [AVAudioSession sharedInstance];

      复制代码

      在获得一个AVAudioSession类的实例后,你就能通过调用音频会话对象的setCategory:error:实例方法,来从IOS应用可用的不同类别中作出选择。下面列出了可供使用的音频会话类别:
      AVAudioSessionCategorySoloAmbient

      这个类别非常像AVAudioSessionCategoryAmbient类别,除了会停止其他程序的音频回放,比如iPod程序。当设备被设置为静音模式,你的音频回放将会停止。

      AVAudioSessionCategoryRecord
      这会停止其他应用的声音(比如iPod)并让你的应用也不能初始化音频回放(比如AVAudioPlayer)。在这种模式下,你只能进行录音。使用这个类别,调用AVAudioPlayer的prepareToPlay会返回YES,但是调用play方法将返回NO。主UI界面会照常工作。这时,即使你的设备屏幕被用户锁定了,应用的录音仍会继续。

      AVAudioSessionCategoryPlayback
      这个类别会静止其他应用的音频回放(比如iPod应用的音频回放)。你可以使用AVAudioPlayer的prepareToPlay和play方法,在你的应用中播放声音。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放都会继续。

      AVAudioSessionCategoryPlayAndRecord
      这个类别允许你的应用中同时进行声音的播放和录制。当你的声音录制或播放开始后,其他应用的声音播放将会停止。主UI界面会照常工作。这时,即使屏幕被锁定或者设备为静音模式,音频回放和录制都会继续。

      AVAudioSessionCategoryAudioProcessing
      这个类别用于应用中进行音频处理的情形,而不是音频回放或录制。设置了这种模式,你在应用中就不能播放和录制任何声音。调用AVAPlayer的prepareToPlay和play方法都将返回NO。其他应用的音频回放,比如iPod,也会在此模式下停止。

      AVAudioSessionCategoryAmbient
      这个类别不会停止其他应用的声音,相反,它允许你的音频播放于其他应用的声音之上,比如iPod。你的应用的主UI县城会工作正常。调用AVAPlayer的prepareToPlay和play方法都将返回YES。当用户锁屏时,你的应用将停止所有正在回放的音频。仅当你的应用是唯一播放该音频文件的应用时,静音模式将停止你程序的音频回放。如果正当iPod播放一手歌时,你开始播放音频,将设备设为静音模式并不能停止你的音频回放。

iOS 用 AVPlayer 播放一个本地音频文件相关推荐

  1. iOS Dev (21) 用 AVPlayer 播放一个本地音频文件

    iOS Dev (21) 用 AVPlayer 播放一个本地音频文件 作者:CSDN 大锐哥 博客:http://blog.csdn.net/prevention 前言 这篇文章与上一篇极其相似,要注 ...

  2. html同时播放多个文件夹,ios – 如何同时播放多个音频文件

    以下格式的文件可以在iPhone上同时播放. AAC,MP3和ALAC(Apple Lossless)音频:有CPU资源问题. 线性PCM和IMA / ADPCM(IMA4音频):没有CPU资源问题. ...

  3. python播放wav文件_python3 写一个WAV音频文件播放器的代码

    环境:ubuntu 16.04 python3.5 pycharm 包 : wave pyaudio sys 上代码:AudioPlayer.py # coding:utf-8 # author:ki ...

  4. iOS】AVPlayer 播放音视频

    1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...

  5. 【iOS】AVPlayer 播放音视频

    1.常见的音视频播放器 iOS开发中不可避免地会遇到音视频播放方面的需求. 常用的音频播放器有 AVAudioPlayer.AVPlayer 等.不同的是,AVAudioPlayer 只支持本地音频的 ...

  6. Mediaplay:Android后台同时播放多个音频文件第一弹:读取并播放音频文件

    Mediaplay:Android后台同时播放多个音频文件 设备/引擎:Mac(11.6)/cocos 开发工具:Android studio(4.1.2) 开发语言:java/c++ 开发需求:an ...

  7. html怎么播放下一首,javascript – HTML5音频播放列表 – 第一个结束后如何播放第二个音频文件?...

    这是一个JSLinted,不引人注目的 Javascript示例,演示如何处理和使用结束的 mediaevent.在您的特定情况下,您将触发在您的结束事件处理程序中播放第二个音频文件. 单击播放列表中 ...

  8. java播放mp3格式音频文件

    下载第三方jar包,网址:http://www.javazoom.net/javalayer/javalayer.html 下载完成之后解压提取jl1.0.0.1.jar 将jl1.0.0.1.jar ...

  9. SDM450+android8.1播放左声道音频文件和右声道音频文件,左右喇叭都有声音问题

    正常的现象是播放左声道音频文件,左喇叭播放:播放右声道音频文件,右喇叭播放,但问题是不管播放左还是右音频文件,左右喇叭都有播放 原理图设计 经过排查,原来是当时产品为了兼容,hardware\qcom ...

最新文章

  1. numpy.random.randn()与numpy.random.rand()的区别(转)
  2. 浅析网站SEO优化用户体验值包括什么后续又该如何进行提升?
  3. thinkcmf搭建教程_5分钟快速入门
  4. leetcode 303. 区域和检索 - 数组不可变
  5. Windows Sysinternals Desktops v1.0 发布 - 超简单的虚拟桌面程序
  6. Android 8.0学习(18)--- Android8.0运行时权限策略变化和适配方案
  7. 【免费】某机构最新3980元机器学习/大数据课程高速下载,限量200份
  8. 尝试实现手势控制计算机(持续跟进)
  9. 每天一道剑指offer-把数组排成最小的数
  10. 2021年上半年软考真题网络工程师真题及答案解析
  11. 甩一个Microsoft office visio 2013的百度云连接
  12. 研究人性弱点的黑客?聊聊社会工程学与网络安全
  13. 线性调频(LFM信号)脉冲压缩雷达matlab仿真- 脉冲压缩 测距 测速 距离速度三维像(附matlab代码)
  14. 【译】2021年十大热门编程语言
  15. 【Python表白小程序】七夕表白神器(赶紧收藏起来)
  16. Win10系统自带的虚拟机怎么打开教学
  17. 华为手机鸿蒙更新时间,华为手机版鸿蒙系统更新时间介绍
  18. php 搜索引擎 分词_PHP 实现中文分词搜索功能
  19. 经纬度换算数值_经纬度转换-----度分秒以及经纬度和米
  20. 我为什么坚信光触媒的未来?

热门文章

  1. 温室大棚控制系统C语言代码,{新}温室大棚控制系统设计.doc
  2. RN ScrollView滑动不到底部问题
  3. 购买kindle后的读书轨迹记录
  4. 单目标优化:飞狐优化算法(Flying Foxes Optimization,FFO)求解cec2017(提供Matlab代码)
  5. ieee access投稿过程
  6. Javascript 计算众数和中位数的代码
  7. 拿去打包上线!一套代码实现1对1 、1对N在线课堂与低延迟大班课
  8. parallels desktop 18 虚拟机下载和Win11下载
  9. PMAC应用二-基本配置
  10. 什么是静态网站和动态网站?