2014-10-30 20 views
5

Tôi làm cách nào để phát tệp âm thanh với AVFoundation trong một Swiftplayground? Lý tưởng nhất, tệp sẽ nằm trong một URL, không phải trong ổ đĩa cục bộ, nhưng điều đó không quan trọng.Phát âm thanh trong Playground Swift

+0

Bất kỳ mã nào bạn đã thử cho đến thời điểm này? –

+0

Xem liên kết này http://stackoverflow.com/questions/24043904/creating-and-playing-a-sound-in-swift?rq=1 –

+0

Tôi không chắc chắn rằng bạn có thể. Để chắc chắn bạn có thể tạo thư mục mới 'Tài nguyên' bên dưới nội dung' sân chơi' và thêm Sân chơi sẽ tìm đường dẫn đó như sau: phát tệp: ///var/folders/74/d78g19sj65bc6z2n6gjw9n4r0000gn/T/com.apple. dt.Xcode.pg/applications/YourApp-67685-8.app/Want_You.mp3 nhưng 'avPlayer.prepareToPlay()' sẽ luôn trả về 'false'. –

Trả lời

2

Tôi đang dò dẫm xung quanh trong bóng tối trên chính bản thân mình, nhưng tôi nghĩ có thể do một số hạn chế của sân chơi nhanh. Hãy xem xét mã này:

#!/usr/bin/swift 

import Cocoa 
import AVFoundation 

var error: NSError? 

println("Hello, Audio!") 
var url = NSURL(fileURLWithPath: "/Users/somebody/myfile.mid") // Change to a local midi file 
var midi = AVMIDIPlayer(contentsOfURL: url, soundBankURL: nil, error: &error) 
if midi == nil { 
    if let e = error { 
     println("AVMIDIPlayer failed: " + e.localizedDescription) 
    } 
} 
midi.play(nil) 
while midi.playing { 
    // Spin (yeah, that's bad!) 
} 

Nếu chúng ta chạy nhanh kịch bản tại nhà ga, nó hoạt động tốt và chơi các tập tin midi, nhưng nếu bạn chạy các mã trong một sân chơi, bạn sẽ có được

AVMIDIPlayer không thành công: Thao tác không thể hoàn tất. (com.apple.coreaudio.avfaudio error -1.)

Về mặt tích cực, có thể chạy nó trong terminal cho biết mã không hoạt động.

+0

Tôi nhận được kết quả tương tự ... – cfischer

1

Tính năng này hoạt động trên dự án mà tôi chưa thử trên Sân chơi. Trước tiên, kéo âm thanh của bạn vào dự án của bạn và chọn sao chép cho điểm đến của bạn nếu cần và chọn "thêm vào mục tiêu" vào ứng dụng của bạn.

import Cocoa 
import AVFoundation 


var beepSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("beep", ofType: "aif")!) 
func initBeep(){ 
    beepPlayer = AVAudioPlayer(contentsOfURL: beepSound, error: nil) 
    beepPlayer.prepareToPlay() 
} 

func playBeepSound(){ 
    beepPlayer.play() 
} 
func applicationDidFinishLaunching(aNotification: NSNotification?) { 

    initBeep() 
} 
@IBAction func btnPlayBeepSound(sender: AnyObject) { 
    playBeepSound() 
} 
Các vấn đề liên quan