2015-11-20 4 views
1

я думал, что я мог бы быть в состоянии использовать AVAssetReader/Writer обрезать MP4, но когда я пытаюсь читать аудио (не пробовал видео пока), я получаю это:IOS - Обрезка mp4 на устройстве

AVAssetReaderOutput does not currently support compressed output

Есть ли способ прочитать MP4 с диска через AVAssetReader?

let asset: AVAsset = AVAsset(URL: NSURL(fileURLWithPath: filePath)) 
     let audioTrack: AVAssetTrack = asset.tracksWithMediaType(AVMediaTypeAudio)[0] 
     let audioTrackOutput: AVAssetReaderOutput = AVAssetReaderTrackOutput(track: audioTrack, outputSettings: 
     [AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC)]) 

     if let reader = try? AVAssetReader(asset: asset) { 
      if reader.canAddOutput(audioTrackOutput) { 
       reader.addOutput(audioTrackOutput) 
      } 
      reader.startReading() 

      var done = false 
      while (!done) { 
       let sampleBuffer: CMSampleBufferRef? = audioTrackOutput.copyNextSampleBuffer() 
       if (sampleBuffer != nil) { 
        print("buffer") 
        //process 
       } else { 
        if (reader.status == AVAssetReaderStatus.Failed) { 
         print("Error: ") 
         print(reader.error) 
        } else { 
         done = true 
        } 
       } 
      } 
     } 
+0

Вы имеете в виду обрезку без декодирования/повторного кодирования? –

+0

@ RhythmicFistman либо работает нормально, на самом деле. Я бы предпочел не перекодировать, но я открыт для повторного кодирования. –

ответ