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 работает еще лучше.