3
私は、オーディオファイルと録音された音声をマージする必要があります。たとえば、録音された音声は47秒です。私は4分のオーディオソングを47秒にカットまたはトリムする必要があります。オーディオファイルをマージします。iOS:Swiftでオーディオファイルをトリミングしますか?
var url:NSURL?
if self.audioRecorder != nil
{
url = self.audioRecorder!.url
}
else
{
url = self.soundFileURL!
}
print("playing \(url)")
do
{
self.newplayer = try AVPlayer(URL: url!)
let avAsset = AVURLAsset(URL: url!, options: nil)
print("\(avAsset)")
let audioDuration = avAsset.duration
let totalSeconds = CMTimeGetSeconds(audioDuration)
let hours = floor(totalSeconds/3600)
var minutes = floor(totalSeconds % 3600/60)
var seconds = floor(totalSeconds % 3600 % 60)
print("hours = \(hours),minutes = \(minutes),seconds = \(seconds)")}
これが出力されます://時間= 0.0分= 0.0秒= 42.0
トリム方法については、私はちょうどこの試みた:、正確な期間を設定した時間と終了時間を開始してする方法を新しいURL:
func exportAsset(asset:AVAsset, fileName:String)
{
let documentsDirectory = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]
let trimmedSoundFileURL = documentsDirectory.URLByAppendingPathComponent(fileName)
print("saving to \(trimmedSoundFileURL!.absoluteString)")
let filemanager = NSFileManager.defaultManager()
if filemanager.fileExistsAtPath(trimmedSoundFileURL!.absoluteString!) {
print("sound exists")
}
let exporter = AVAssetExportSession(asset: asset, presetName: AVAssetExportPresetAppleM4A)
exporter!.outputFileType = AVFileTypeAppleM4A
exporter!.outputURL = trimmedSoundFileURL
let duration = CMTimeGetSeconds(asset.duration)
if (duration < 5.0) {
print("sound is not long enough")
return
}
// e.g. the first 5 seconds
let startTime = CMTimeMake(0, 1)
let stopTime = CMTimeMake(5, 1)
let exportTimeRange = CMTimeRangeFromTimeToTime(startTime, stopTime)
exporter!.timeRange = exportTimeRange
// do it
exporter!.exportAsynchronouslyWithCompletionHandler({
switch exporter!.status {
case AVAssetExportSessionStatus.Failed:
print("export failed \(exporter!.error)")
case AVAssetExportSessionStatus.Cancelled:
print("export cancelled \(exporter!.error)")
default:
print("export complete")
}
})
}