ios - append or concatenate audio files in swift -


hi want append voice files.

i'm recording voice avaudiorecorder, play recording need call "stop", after playing want continue record. native ios voice memo app.

should use avmutablecompositiontrack , how do in swift? thanks!

if looking pause recording , continue later can use avaudiorecorder's pause() function rather stop() , continue recording when use play() again.

however, if looking concatenate audio files, can this:

func concatenatefiles(audiofiles: [nsurl], completion: (concatenatedfile: nsurl?) -> ()) {     guard audiofiles.count > 0 else {         completion(concatenatedfile: nil)         return     }      if audiofiles.count == 1 {         completion(concatenatedfile: audiofiles.first)         return     }      // concatenate audio files 1 file     var nextclipstarttime = kcmtimezero     let composition = avmutablecomposition()     let track = composition.addmutabletrackwithmediatype(avmediatypeaudio, preferredtrackid: kcmpersistenttrackid_invalid)      // add each track     recording in audiofiles {         let asset = avurlasset(url: nsurl(fileurlwithpath: recording.path!), options: nil)         if let assettrack = asset.trackswithmediatype(avmediatypeaudio).first {             let timerange = cmtimerange(start: kcmtimezero, duration: asset.duration)             {                 try track.inserttimerange(timerange, oftrack: assettrack, attime: nextclipstarttime)                 nextclipstarttime = cmtimeadd(nextclipstarttime, timerange.duration)             } catch {                 print("error concatenating file - \(error)")                 completion(concatenatedfile: nil)                 return             }         }     }      // export new file     if let exportsession = avassetexportsession(asset: composition, presetname: avassetexportpresetpassthrough) {         let paths = nssearchpathfordirectoriesindomains(.documentdirectory, .userdomainmask, true)         let documents = nsurl(string: paths.first!)          if let fileurl = documents?.urlbyappendingpathcomponent("file_name.caf") {             // remove existing file             {                 try nsfilemanager.defaultmanager().removeitematpath(fileurl.path!)                 print("removed \(fileurl)")             } catch {                 print("could not remove file - \(error)")             }              // configure export session output             exportsession.outputurl = nsurl.fileurlwithpath(fileurl.path!)             exportsession.outputfiletype = avfiletypecoreaudioformat              // perform export             exportsession.exportasynchronouslywithcompletionhandler() { handler -> void in                 if exportsession.status == .completed {                     print("export complete")                     dispatch_async(dispatch_get_main_queue(), {                         completion(file: fileurl)                     })                     return                 } else if exportsession.status == .failed {                     print("export failed - \(exportsession.error)")                 }                  completion(concatenatedfile: nil)                 return             }         }     } } 

Comments

Popular posts from this blog

cakephp - simple blog with croogo -

How to group boxplot outliers in gnuplot -

bash - Performing variable substitution in a string -