【问题标题】:No sound when playing mp3 in iOS using swift使用swift在iOS中播放mp3时没有声音
【发布时间】:2015-12-14 16:31:24
【问题描述】:

播放声音时没有错误消息。我放了一个打印语句进行测试,并且 url 得到了正确的路径。播放按钮发出咔嗒声,有时我会听到微弱的咔嗒声,但仅此而已。没有其他声音发出。我尝试过不同的 mp3 文件。如果我删除 mp3 文件,我会收到一条错误消息。我检查了音量。

播放按钮位于第二个视图控制器中。主视图控制器有一个表格视图。当用户点击单元格时,它会将他带到这个视图控制器。

//  DetailVC.swift

import AVFoundation
import UIKit

class DetailVC: UIViewController {

    var duaPlayer = ""  //is this correct???


    override func viewDidLoad() {
        super.viewDidLoad()

    }



    @IBAction func playbutton(sender: AnyObject) {

        do {
        let url = NSBundle.mainBundle().URLForResource("track1", withExtension: "mp3")

      var duaPlayer = try AVAudioPlayer(contentsOfURL: url!)

            duaPlayer.prepareToPlay()
            print (url)
            duaPlayer.volume = 0.5

            duaPlayer.play()
        }

        catch
        { fatalError("err")}

    }

【问题讨论】:

  • 可能是 duaPlayer 在开始播放之前就被释放了,因为它是一个局部变量。尝试在 playbutton 方法中删除 duaPlayer 前面的 var。
  • duaPlayer = try AVAudioPlayer(contentsOfURL: url!) //我取出了var,它没有编译,它说不能将“AVAudioPlayer类型的值赋给字符串类型”
  • 当然,你的duaPlayer是String。将其更改为 AVAudioPlayer 类型的可选。
  • 如果对我的问题有帮助,请将其标记为有用,谢谢

标签: ios swift audio


【解决方案1】:

我认为 AVAudioPlayer 不支持流式传输。对于直播使用 AVPlayer

//try this, it should work
var player = AVPlayer()
func configureView() {
    let url = "http://yoururl.com"
    let playerItem = AVPlayerItem( URL:NSURL( string:url ) )
    player = AVPlayer(playerItem:playerItem)
    player.rate = 1.0;
    player.play()
}

另一方面,使用 AVAudioPlayer 你可以先下载 mp3 文件然后再播放 -->

let url = "http://YourURL/music/music.mp3"
let fileURL = NSURL(string:url)
let soundData = NSData.dataWithContentsOfURL(fileURL, options: nil, error: nil)
var error: NSError?
self.player = AVAudioPlayer(data: soundData, error: &error)
if player == nil {
  if let e = error {
    println(e.localizedDescription)
  }
}
player.prepareToPlay()
player.volume = 1.0
player.delegate = self
player.play()

PS:请记住,因为 iOS 9:App Transport Security (ATS) 必须配置为接受非 ssl 连接。 将此代码添加到您的 info.plist->

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    • 2014-08-14
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    相关资源
    最近更新 更多