当前位置: 首页 > news >正文

AVAudioPlayer播放音频文件时没声音

AVAudioPlayer播放一个mp3文件时,居然没有声音。mp3文件是放在工程里面的,路径没有错误但就是死活没有声音。

func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error) 
            if error != nil {
                println(error)
            } else {
                avAudioPlayer.volume = 1.0
                avAudioPlayer.prepareToPlay()
                avAudioPlayer.play()
            }
        }
    }

 解决方法是把avAudioPlayer定义为全局变量的时候就有声音了,是不是很神奇。应该是被内存回收了所以没有声音,记得要定义为全局变量

var avAudioPlayer:AVAudioPlayer?
func playSound() {
        let notifyUrl = NSBundle.mainBundle().pathForResource("notify", ofType: "mp3")
        //let notifyUrl = NSBundle.mainBundle().resourcePath?.stringByAppendingPathComponent("notify.mp3")
        if let mp3 = notifyUrl {
            let url = NSURL(fileURLWithPath: mp3)
            
            //            var filemanager = NSFileManager()
            //            let result = filemanager.fileExistsAtPath(mp3)
            //            println("result=\(result)")
            
            AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
            
            var error:NSError?
            //var avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            avAudioPlayer = AVAudioPlayer(contentsOfURL: url, error: &error)
            if error != nil {
                println(error)
            } else {
                avAudioPlayer?.volume = 1.0
                avAudioPlayer?.prepareToPlay()
                avAudioPlayer?.play()
            }
        }
    }

 

相关文章:

  • yum方式安装mysql报错找不到mysql.sock
  • LCM性质 + 组合数 - HDU 5407 CRB and Candies
  • poj 2513 Colored Sticks(欧拉路径+并检查集合+特里)
  • 在eclipse中建立lua开发环境
  • Android 适配
  • 关于闭包的概念之PHP_已迁移
  • ArchSummit北京2015大会九大看点
  • linux挂载windows共享文件夹的方法
  • CRT/LCD/VGA Information and Timing
  • [转载]泛化、实现、依赖和关联的区别
  • centos6.7安装图文教程
  • C# PPT 为形状设置三维效果
  • InfoQ宣布成立CNUT容器技术俱乐部 欲连接中国容器社区
  • 深入分析Volatile的实现原理
  • cmake的四个命令:add_compile_options、add_definitions、target_compile_definitions、build_command...
  • python3.6+scrapy+mysql 爬虫实战
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • Angular4 模板式表单用法以及验证
  • bearychat的java client
  • co.js - 让异步代码同步化
  • CODING 缺陷管理功能正式开始公测
  • CSS实用技巧
  • Flex布局到底解决了什么问题
  • javascript数组去重/查找/插入/删除
  • JavaScript新鲜事·第5期
  • Median of Two Sorted Arrays
  • PHP的Ev教程三(Periodic watcher)
  • Protobuf3语言指南
  • Rancher如何对接Ceph-RBD块存储
  • 两列自适应布局方案整理
  • 思考 CSS 架构
  • 突破自己的技术思维
  • 微信小程序设置上一页数据
  • 我看到的前端
  • #Linux(权限管理)
  • #前后端分离# 头条发布系统
  • (¥1011)-(一千零一拾一元整)输出
  • (2)STM32单片机上位机
  • (9)目标检测_SSD的原理
  • (C语言)逆序输出字符串
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (接口封装)
  • (六)Hibernate的二级缓存
  • (一) storm的集群安装与配置
  • (一)Neo4j下载安装以及初次使用
  • (转)程序员疫苗:代码注入
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .NET Framework Client Profile - a Subset of the .NET Framework Redistribution
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • .sdf和.msp文件读取
  • @require_PUTNameError: name ‘require_PUT‘ is not defined 解决方法