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

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人!

转载于:https://www.cnblogs.com/daxueba-ITdaren/p/5007118.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/289772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php fpm工作原理,什么是phpfpm的工作原理?

什么是phpfpm的工作原理?发布时间:2020-07-13 15:12:53来源:亿速云阅读:181作者:Leah什么是phpfpm的工作原理?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多…

C#对象映射器之Mapster

简介Mapster是一个快,小巧,功能强大的对象映射.Net框架例子我有两个Model类且他们的属性一致,我们将 SourceObjectTest赋值给DestObjectTest该怎么做?SourceObjectTest sourceObject new SourceObjectTest(); sourceObject.Name …

如何关闭Struts2的webconsole.html

出于安全目的,在禁用了devMode之后,仍然不希望其他人员看到webconsole.html页面,则可以直接删除webconsole.html 的源文件, 它的位置存在于: 我们手工删除 struts2-core-*.jar\org\apache\struts2\interceptor\debuggi…

UIView 的基础

UIView•什么是控件?-屏幕上的所有UI元素都叫做控件,也有人叫做视图、组件-按钮(UIButton)、文本(UILabel)都是控件•控件的共同属性有哪些?-尺寸-位置-背景色-......-•苹果将控件的共同属性都…

JS

为什么80%的码农都做不了架构师?>>> function getQueryString(name) {var reg new RegExp("(^|&)" name "([^&]*)(&|$)"),r window.location.search.substr(1).match(reg);if(r ! null) {return unescape(r[2]); }r…

ssh公钥免密码登录

2019独角兽企业重金招聘Python工程师标准>>> ssh 无密码登录要使用公钥与私钥。linux下可以用用ssh-keygen生成公钥/私钥对,下面我以CentOS为例。 有机器A(192.168.1.155),B(192.168.1.181)。现想A通过ssh免密码登录到B。 首先以root账户登陆…

Spring4Shell的漏洞原理分析

Spring框架最新的PoC这两天出来的一个RCE漏洞,但是有以下的条件限制才行:必须是jdk9及以上必须是部署在tomcat的应用是springmvc的或者webflux的应用具体的可以查看spring官方:https://spring.io/blog/2022/03/31/spring-framework-rce-early…

php 点对点,浅析点对点(End-to-End)的场景文字识别

一、背景随着智能手机的广泛普及和移动互联网的迅速发展,通过手机等移动终端的摄像头获取、检索和分享资讯已经逐步成为一种生活方式。基于摄像头的(Camera-based)的应用更加强调对拍摄场景的理解。通常,在文字和其他物体并存的场景,用户往往…

【ArcGIS遇上Python】Python实现Modis NDVI批量化月最大合成

「 刘一哥GIS」CSDN专业技术博文专栏目录索引https://geostorm.blog.csdn.net/article/details/113732454 最大合成法(MVC)可以在Envi中的Band Math中进行,式子是B1>B2,但是无法批量化;本文实现在ArcGIS中利用Python代码批量进行,如下: 用到的Modis NDVI数据是在MRT…

cad2016中选择全图字体怎么操作_打开CAD图纸字体丢失、重新选择怎么办?这样设置,一辈子用的到...

AutoCAD图纸本身就有着比较特殊的个性,难编辑难打开,时不时的还会来个乱码、字体缺失,甚至有的时候还提示我们进行字体的重新选择,应该怎么解决呢?虽然是个很经常遇见的问题,很多的小伙伴还是不知道如何解决…

MassTransit - .NET Core 的分布式应用程序框架

简介MassTransit 是一个免费的、开源的.NET 分布式应用程序框架。MassTransit 使创建应用程序和服务变得容易,这些应用程序和服务利用基于消息的松散耦合异步通信来实现更高的可用性、可靠性和可扩展性特点•易于使用和理解的 API,让您专注于解决业务问题…

mongo学习笔记(二):聚合,游标

一、聚合 <1> Count 1.db.person.count() 2.db.person.count({"age":20}) <2> Distinct db.person.distinct("age")//指定了谁&#xff0c;谁就不能重复 <3> Group key&#xff1a;这个就是分组的key&#xff0c;我们这里是对年龄分组。…

Java实验二猜数字游戏,JAVA-第2周实验-猜数字游戏

JAVA--第2周实验--猜数字游戏/* (程序头部注释开始)* 程序的版权和版本声明部分* Copyright (c) 2011, 烟台大学计算机学院学生* All rights reserved.* 文件名称&#xff1a;猜数字游戏* 作 者&#xff1a; 雷恒鑫* 完成日期&#xff1a; 2012 年 09 月 07 日* 版 本 号&#…

Xamarin效果第十五篇之自定义CheckBox

在上一篇中使用Xamarin玩耍了GIS加载高德和百度;这不这两天又抽空完善了一下;自定义了一下CheckBox;来看看最终效果:关于实现咱就是直接自定义ContentView:后台无非就是一堆的依赖属性(和WPF真像):后台定义的Command为了支持选中状态:‍再来看看具体使用:<CustomViews:Image…

java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath

xpath全称 XML Path Language 是一门在XML文档中 查找信息的语言 最初是用来搜寻XML文档的 但是它同样适用于HTML文档的搜索XPath 的选择功能十分强大&#xff0c;它提供了非常简洁的路径选择表达式&#xff0c;另外还提供了超过100个内置函数&#xff0c;用于字符串&#xff0…

ant压缩在哪卸载_反病毒软件这么多,到底哪一款适合你

记得大学读书的时候,买了电脑,第一件事情就是卸载windows自带的杀毒软件,然后装上自己心仪的杀毒软件,可是市面上杀毒软件这么多,哪一款适合你呢?我找了市面上排名最靠前的三款杀毒软件,让我们看看他们孰胜孰劣,还是各有千秋.他们分别是腾讯的电脑管家,金山毒霸,360安全卫士.这…

.NetCore使用NETCore.MailKit发送邮件

前言平时工作中很少用到需要发邮件的功能&#xff0c;所以邮件这块的功能也没有太过关注。近期有一个项目需要接收用户的反馈&#xff0c;上边决定使用邮件&#xff0c;直接将反馈信息发送给领导&#xff0c;也就有了这篇文章。实现发邮件不难&#xff0c;但是开发中遇到了一个…

哄媳妇

1、如果你的女人在你面前哭了&#xff0c;无论什么原因&#xff0c;请抱紧她&#xff0c;再反抗也要抱紧&#xff0c;趴在桌子上永远没有在你怀里安心&#xff1b; 2、如果你的女人指出了你的不是&#xff0c;请不要总是嫌她唠叨&#xff0c;若不是因为在乎她不会说你&#xff…

自己搭建一个k8s环境

背景Kubernetes 是时下流行的容器编排引擎&#xff0c;因为字母太多&#xff0c;且掐头去尾后剩下 8 个字母&#xff0c;于是被大家亲切的缩写为 k8s。Kubernetes https://kubernetes.io/另外所谓“云原生”概念火爆&#xff0c;各大云厂商也纷纷推出了自己的容器服务&#xff…

个人电脑 公司电脑 代理_这样的电脑谁来用?一体式水冷,磁悬浮风扇!

原标题&#xff1a;这样的电脑谁来用&#xff1f;一体式水冷&#xff0c;磁悬浮风扇&#xff01;海盗船是个人电脑市场资历最老、信誉最好的个人电脑元件制造商之一。该公司最初的产品主要是和存储相关的&#xff0c;后来&#xff0c;海盗船开始慢慢向其他细分市场扩张。虽然他…