class ALAssetNSInputStream:InputStream {
var size:Int64 = 0
fileprivate var stream: InputStream = InputStream()
convenience override init(url: URL) {
self.init()
if let asset = ALAsset.getAssetFromUrlSync(url: url.absoluteString), let rept = asset.defaultRepresentation() {
let fileName = rept.filename()
var contentData: Data?
contentData = //rept.data//
if contentData != nil {
self.stream = InputStream(data: contentData!)
self.size = Int64(contentData!.count)
}
}
}
override func read(_ buffer: UnsafeMutablePointer<UInt8>, maxLength len: Int) -> Int {
let readBytes = stream.read(buffer, maxLength: len)
return readBytes
}
override var hasBytesAvailable: Bool {
get {
return stream.hasBytesAvailable
}
}
override func open() {
self.stream.open()
}
override func close() {
self.stream.close()
}
override var streamStatus: Stream.Status {
get {
return stream.streamStatus
}
}
override var delegate: StreamDelegate? {
set {
stream.delegate = newValue
}
get {
return stream.delegate
}
}
/* MARK swift3.0
func _scheduleInCFRunLoop(_ runLoop: RunLoop, forMode mode: String) {
DPrint("call _scheduleInCFRunLoop")
}*/
// MARK swift 5.0 特别处理(必须重写!!!!!)
override func schedule(in aRunLoop: RunLoop, forMode mode: RunLoop.Mode) {
DPrint("schedule")
}
}
网友评论