iOS 9音频应用播放音频之音量设置与声道设置

iOS 9音频应用音量设置

音量又称响度、音强,是指人耳对所听到的声音大小强弱的主观感受,其客观评价尺度是声音的振幅大小。在iOS 9音频应用的应用中,经常会出现播放的音乐音量过大或者过小。此时iOS 9音频应用开发者可以使用AVAudioPlayer类中的volume属性对音频文件的音量进行设置。其语法形式如下:

  • var volume: Float

其中,该属性设置的值是浮点类型,范围在0.0到1.0之间。当设置的值为0.0时,表示静音;当设置的为为1.0时,表示最大音量。

注意:如果开发者想要让耳机系统发挥出最佳状态,谨记把音量调到最合适的水平,如果你对现场真实的音量不熟悉,那么就多找机会去听现场!

【示例2-4】以下将以第一个实例为基础,实现音量的调节。具体的操作步骤如下:

1.显示更多设置项

(1)将主视图中的Bar Button Item控件与动作showMoreSettingsView进行关联。

(2)打开ViewController.swift文件,编写代码,实现显示更多设置项,代码如下:

  • @IBAction func showMoreSettingsView(sender: AnyObject) {
  • UIView.beginAnimations("", context: nil)
  • UIView.setAnimationDuration(2)
  • moreSettingsView.hidden=false
  • UIView.commitAnimations()
  • }

2.ios9设置音量

(1)将主视图中的Volume Slider与插座变量volumeSlider进行关联。

(2)将主视图中的Volume Slider与动作setVolume进行关联。

(3)打开ViewController.swift文件,编写代码,首先需要在viewDidLoad()方法中添加一行代码,实现对音量的设置,这个音量是初始音量,代码如下:

  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • moreSettingsView.hidden=true
  • let path=NSBundle.mainBundle().pathForResource("Liekkas", ofType: "mp3")
  • ……
  • audioEffect?.prepareToPlay()
  • audioEffect?.volume=volumeSlider.value                                               //设置音量大小
  • }

(4)在ViewController.swift文件中的setVolume()动作编写代码,实现通过滑块调节音频大小的功能。代码如下:

  • @IBAction func setVolume(sender: AnyObject) {
  • audioEffect?.volume=volumeSlider.value
  • self.performSelector(("hideMoreSettingsView"), withObject: self, afterDelay: 3)
  • }
  • //隐藏更多设置项界面
  • func hideMoreSettingsView(){
  • moreSettingsView.hidden=true
  • }

此时运行程序,在模拟器界面中轻拍播放按钮,此时音频文件就会开始播放,当开发者轻拍导航栏中的更多按钮后,会弹出更多设置项的界面,如图2.26所示。当开发者可以滑动滑块来控件音量的大小。

图2.26  设置音量

iOS 9音频应用声道设置

为了让声音可以还原真实的效果,所以有了声道的产生。声道是指声音在录制或播放时在不同空间位置采集或回放的相互独立的音频信号。通过声道,开发人员可以调整声音的强弱以及延迟模拟各种真实的声音效果。一般情况下声音在录制时采用设备的不同,可以分为单声道、立体声、3D环绕声、四声环绕、5.1声道和7.1声道。

1.单声道

所谓的单声道,就是声音只由一只音箱产生,听众可以很明显地听出声音的来源就是音箱所摆放的位置,其本身的表现力较为平淡;当通过两个扬声器回放单声道信息的时候,我们可以明显感觉到声音是从两个音箱正中间传递到我们耳朵里的。这种缺乏位置感的录制方式用现在的眼光看自然是很落后的,但在声卡刚刚起步时,已经是非常先进的技术了。

2.立体声

单声道缺乏对声音的位置定位,而立体声技术则彻底改变了这一状况。它利用了两个独立声道进行录音,整个过程不加任何的声音处理。立体声系统的再现需要一对音箱来完成,它通过调整系统中两只音箱发出声音的大小,让我们误认为声源来自两只音箱之间直线段中的任意位置。特别是当使用耳机的时候,由于左右两边的声音串音情况很少发生,所以声音的定位比较准确;再加上比较真实的音场感觉,它的表现力比单声道真实得多。立体声虽然可以改变单声道缺乏对声音的位置定位功能,但是它的不足也是很明显的。例如,对音箱的位置摆放要求较高,摆位的不好会直接影响声音的表达。

3.3D环绕声

3D 环绕声有时也称作3D增强立体声(3D Enhancement)。它是一种模拟环绕声系统。左、右声道的立体声信号,经过数字信号处理后,通过左、右两路音箱,产生三维的环绕声场效果。

4.四声环绕

四声道环绕规定了4个发音点,分别为前左、前右,后左、后右。听众则被包围在这中间。同时还建议增加一个低音音箱,以加强对低频信号的回放处理。这也就是如今4.1声道音箱系统广泛流行的原因。就整体效果而言,四声道系统可以为听众带来来自多个不同方向的声音环绕,可以获得身临其境的听觉感受,给用户以全新的体验。如今四声道技术已经广泛融入于各类中高档声卡的设计中,成为未来发展的主流趋势。

5.5.1声道

5.1声道已广泛运用于各类传统影院和家庭影院中。一些比较知名的声音录制压缩格式,譬如杜比AC-3(Dolby Digital)、DTS等都是以5.1声音系统为技术蓝本的。其中“.1”声道,则是一个专门设计的超低音声道,这一声道可以产生频响范围20~120Hz的超低音。其实5.1声音系统来源于4.1环绕,不同之处在于它增加了一个中置单元。这个中置单元负责传送低于80Hz的声音信号,在欣赏影片时有利于加强人声,把对话集中在整个声场的中部,以增加整体效果。

6.7.1声道

7.1声道系统的作用简单来说就是在听者的周围建立起一套前后声场相对平衡的声场。

通过不同声道模式采集的声音(录音的声音)在播放时由于选择的播放声道的模式不同,会产生不一样的播放效果。声音在播放时的声道模式有3种,分别为左声道、右声道以及左右混合。以下就是对这3种在播放时声道模式的介绍。

  • q  左声道:电子设备中模拟人类左耳的听觉范围产生的声音输出。
  • q  右声道:电子设备中模拟人类右耳的听觉范围产生的声音输出。
  • q  左右混合:电子设备中模拟人类左右耳的听觉范围产生的声音输出。

在iOS中对于声音在播放时的声道模式是可以进行设置的,此时需要使用到pan属性,其语法形式如下:

  • var pan: Float

其中,该属性设置的值可以为-1.0、0.0以及1.0。这3个值的说明如下:

  • q  -1.0:表示左声道。
  • q  0.0:表示左右混合。
  • q  1.0:表示右声道。

【示例2-5】以下将以第一个实例为基础,实现声道模式的设置。具体的操作步骤如下:

(1)将主视图中的Pan Segmented Control与插座变量panSegmentedControl进行关联。

(2)将主视图中的Pan Segmented Control与动作setPan进行关联。

(3)打开ViewController.swift文件,编写代码,首先需要在viewDidLoad()方法中添加一行代码,实现对声道模式的设置,这个声道是初始声道。代码如下:

  • override func viewDidLoad() {
  • super.viewDidLoad()
  • // Do any additional setup after loading the view, typically from a nib.
  • moreSettingsView.hidden=true
  • let path=NSBundle.mainBundle().pathForResource("Liekkas", ofType: "mp3")
  • ……
  • audioEffect?.volume=volumeSlider.value
  • audioEffect?.pan = -1.0                                                                      //将声道设置为左声道
  • }

(4)在ViewController.swift文件中的setPan动作编写代码,实现通过声道模式的设置。代码如下:

  • @IBAction func setPan(sender: AnyObject) {
  • let index=panSegmentedControl.selectedSegmentIndex
  • if(index==0){
  • audioEffect?.pan = -1.0                                                              //将声道设置为左声道
  • hideMoreSettingsView()
  • }else if(index==1){
  • audioEffect?.pan = 0.0                                                               //将声道设置为左右混合
  • hideMoreSettingsView()
  • }else if(index==2){
  • audioEffect?.pan = 1.0                                                               //将声道设置为右声道
  • hideMoreSettingsView()
  • }
  • }

此时运行程序,在模拟器界面中轻拍播放按钮,音频文件就会开始播放,此时听到的声音是来自左声道的;当开发者轻拍导航栏中的更多按钮后,会弹出更多设置项的界面。在声道这一项中开发者可以选择声音进行播放时所使用的声道模式。

本文选自:iOS 9音频应用开发基础教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!

iOS 9音频应用播放音频之音量设置与声道设置相关推荐

  1. iOS 9音频应用播放音频之iOS 9音频播放进度

    iOS 9音频应用播放音频之iOS 9音频播放进度 iOS 9音频应用开发播放进度 音频文件在播放后经过了多久以及还有多久才可以播放完毕,想必是用户所关注的问题.为了解决这一问题,在很多的音乐播放器中 ...

  2. iOS 9音频应用播放音频之控制播放速度

    iOS 9音频应用播放音频之控制播放速度 iOS 9音频控制播放速度 iOS9音频文件在播放时是以一定的速度进行的.这个速度是可以进行更改的,从而实现iOS9音频文件的快速播放和慢速播放功能.要实现i ...

  3. ​iOS 9音频应用播放音频之第一个ios9音频实例2

    ​iOS 9音频应用播放音频之第一个ios9音频实例2 ios9音频应用关联 iOS9音频应用中对于在主视图上添加的视图或控件,在使用它们时必须要与插座变量进行关联.ios9插座变量其实就是为主视图中 ...

  4. iOS 9音频应用播放音频之第一个ios9音频实例

    iOS 9音频应用播放音频之第一个ios9音频实例 第一个ios9音频实例 为了让开发者可以对上面的内容有更加深入的了解,本节将实现播放音频的第一个实例.在此实例中会涉及到项目的创建.界面设计.关联以 ...

  5. iOS 9音频应用播放音频之ios9音频基本功能

    iOS 9音频应用播放音频之ios9音频基本功能 在iOS 9音频应用开发中最为简单和常用的就是AVFoundation框架中的AVAudioPlayer类.虽然AVAudioPlayer类不能播放网 ...

  6. android怎么播放音频,Android播放音频的两种方式

    一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: private MediaPlayer mPlayer = null; mPlayer = Med ...

  7. java 双声道音频_Android 播放音频如何实现双声道效果

    1 使用场景 Android 无法直接采集双声道,用户如果想实现播放的音频具有双声道效果,可以参考本文. 2 实现流程 双声道效果实现的主流程为: 下文将分别讲述各个步骤. 2.1 输入双声道数据 主 ...

  8. pyaudio录制音频和播放音频

    目录 前期准备 播放音频文件 录制音频文件 曾遇到的问题 其它 前期准备 pip install pyaudio wave 播放音频文件 import pyaudio import waveCHUNK ...

  9. H5 自动播放背景音频,兼容安卓和苹果手机, ios createInnerAudioContext 无法自动播放解决

    原因应该是IOS不允许自动播放音频,有两种解决方法 在main.js Vue.prototype.innerAudioContext = uni.createInnerAudioContext(); ...

最新文章

  1. python学习之--安装IDE(eclipse+pydev)
  2. JavaScript日历(es5版本)
  3. 计算机视觉如何给企业带来不同?
  4. 恢复mysql中root用户的所有权限_如何还原MySQL root用户的全部权限
  5. 计算机专业sci二区论文难吗,通信专业二区sci难吗
  6. MATLAB函数随笔之计算篇
  7. 5G时代需要新的商业模式,国产芯片将不再落后
  8. XStream实现缓存
  9. 使用rsyslog+loganalzey收集日志显示客户端ip
  10. lubuntu输入法设置_Ubuntu18输入法设置
  11. STM32L476低功耗—进入STOP2模式4s后LPTIM中断唤醒+功率实测
  12. java中八种基本类型及默认值(2015年9月22日)
  13. 技嘉B550M-AORUS-ELITE主板RAID故障与解决方案
  14. python如何自己写库_亲自动手写一个python库(二)
  15. [转载]关于如何选择5D2和6D的忠告_我是亲民_新浪博客
  16. 实用自动化运维Python脚本
  17. 【5G系列】MICO学习总结(1)
  18. 把PPT每张幻灯片单独保存保存为图片
  19. Excel 基础的操作
  20. python拟合非线性模型_python-绘制分段拟合到非线性数据

热门文章

  1. 【转】Linux awk命令详解
  2. (转)测测你是否有搜索引擎依赖症
  3. JQ无法修改input的type属性的替代解决方法
  4. Docker映像和容器之间有什么区别?
  5. 停止JavaScript中的setInterval调用
  6. Harbor Docker 镜像仓库搭建
  7. js进阶课程 12-9 jquery的事件对象event的方法有哪些?
  8. AJAX (异步 javascript 和 xml)
  9. Object.keys()
  10. [WinApi]邮槽通信C/S实例