【发布时间】:2021-12-27 01:05:30
【问题描述】:
我正在尝试解码 Prores 视频文件,但它不起作用。我总是得到
Optional(Error Domain=AVFoundationErrorDomain Code=-11821 "Cannot Decode" UserInfo={NSLocalizedFailureReason=媒体数据无法解码。可能已损坏。, NSLocalizedDescription=无法解码, NSUnderlyingError=0x600002a982a0 {Error Domain=NSOSStatusErrorDomain Code =-12137 "(null)"}})
这里有一个完整的解码器:
class Decoder {
private let assetReader: AVAssetReader?
private let output: AVAssetReaderTrackOutput
init() throws {
VTRegisterProfessionalVideoWorkflowVideoDecoders()
VTRegisterProfessionalVideoWorkflowVideoEncoders()
let assetReader = try AVAssetReader(asset: movieAsset)
let tracks = movieAsset.tracks(withMediaType: .video)
guard let firstTrack = tracks.first else {
print("No video tracks found")
throw NSError()
}
let out = AVAssetReaderTrackOutput(track: firstTrack, outputSettings: outputSettings)
out.alwaysCopiesSampleData = true
assetReader.add(out)
self.assetReader = assetReader
self.output = out
}
func run(){
guard let assetReader = assetReader, assetReader.startReading() else {
print("Failed to stard asset reader")
return
}
while(assetReader.status == .reading) {
guard let sampleBuffer = output.copyNextSampleBuffer() else {
print(assetReader.status.rawValue)
print(assetReader.error)
continue
}
print("Decoding success!")
}
}
}
【问题讨论】:
标签: avfoundation video-processing avkit video-toolbox