iOS - 在设备上修剪 mp4

iOS - Trimming mp4 on device

我以为我可以使用 AVAssetReader/Writer 到 trim MP4,但是当我尝试阅读音频(还没有尝试过视频)时,我得到了这个:

AVAssetReaderOutput does not currently support compressed output

有没有办法通过AVAssetReader从磁盘读取 MP4?

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
                    }
                }
            }
        }

AVAssetExportSession 是解决方案。 SCAssetExportSession 效果更好。