iOS - обрезка mp4 на устройстве

Я думал, что смогу использовать AVAssetReader/Writer обрезать 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
                    }
                }
            }
        }

1 ответ

Решение

AVAssetExportSession является решением. SCAssetExportSession работает еще лучше.

Другие вопросы по тегам