2017-05-22 2 views
0

Ich versuche, eine Audio-Datei in swift mit avplayer zu spielen, wenn ich eine Datei spiele ich zwei Dateien erzeugt die Kombination, erhalte ich diese AusgabeWarum erhalte ich diese Ausgabe, wenn ich den AVPlayer in Swift verwende?

playing file:"file location".m4a -- file:/// 

aber wenn ich eine andere macht wieder Tondatei spielen es gut spielt, und i nicht bekommen, die - file: /// in der Ausgabe, nachdem sie spielen

das ist, wie ich die Audio-

func play(url:NSURL) { 
do { 
    soundPlayer = AVPlayer(url: url as URL) 
    soundPlayer.volume = 1.0 
    soundPlayer.play() 
} catch let error as NSError { 
    print(error.localizedDescription) 
} catch { 
    print("failed") 
} 

} 

und dies spiele, was ich bin mit zwei Audio-Dateien verketten

func makeSounds(sounds: [NSURL], preName: String){ 
    let composition = AVMutableComposition() 
    print(sounds) 

    for sound in sounds { 
    let compositionAudioTrack:AVMutableCompositionTrack = composition.addMutableTrack(withMediaType: AVMediaTypeAudio, preferredTrackID: CMPersistentTrackID()) 
    let avAsset = AVURLAsset(url: sound as URL) 
    let track = avAsset.tracks(withMediaType: AVMediaTypeAudio)[0] 
    let timeRange = CMTimeRange(start: CMTimeMake(0, 600), duration: track.timeRange.duration) 
    try! compositionAudioTrack.insertTimeRange(timeRange, of: track, at: composition.duration) 

    } 


    let documentDirectoryURL = NSURL(fileURLWithPath: Urls.user) 
    var fileDestinationUrl = documentDirectoryURL.appendingPathComponent("\(SoundData.Name)\(preName).m4a") 


    let assetExport = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetAppleM4A) 
    assetExport?.outputFileType = AVFileTypeAppleM4A 
    assetExport?.outputURL = fileDestinationUrl 


    assetExport?.exportAsynchronously(completionHandler: 
     { 
      switch assetExport!.status 
      { 
      case AVAssetExportSessionStatus.failed: 
       print("failed \(assetExport?.error)") 
      case AVAssetExportSessionStatus.cancelled: 
       print("cancelled \(assetExport?.error)") 
      case AVAssetExportSessionStatus.unknown: 
       print("unknown\(assetExport?.error)") 
      case AVAssetExportSessionStatus.waiting: 
       print("waiting\(assetExport?.error)") 
      case AVAssetExportSessionStatus.exporting: 
       print("exporting\(assetExport?.error)") 
      default: 
       soundsToPlay.soundLocation = String(describing: fileDestinationUrl!) 
       print("Audio Concatenation Complete") 
      } 
    }) 



} 

die Audiodatei Lage auf die URL korrekt angezeigt ich es bin Einstellung exportiert werden, aber es bekomme ich nur, dass Fehler nicht die Audio-Datei spielen,

Antwort

0

AVAssetExportSession in einen Pfad String braucht ' Dateiformat, das normalerweise über URL.relativeString erhalten wird, einschließlich 'file: ///'

Verwandte Themen