Skip to content

Instantly share code, notes, and snippets.

@gonchar
Created December 10, 2015 09:43
Show Gist options
  • Save gonchar/8db96c40f65b3b7d007b to your computer and use it in GitHub Desktop.
Save gonchar/8db96c40f65b3b7d007b to your computer and use it in GitHub Desktop.
assetwriter in swift
// var videoWriter: AVAssetWriter = try! AVAssetWriter(URL: self.movieUrl, fileType: AVFileTypeQuickTimeMovie)
//
// var avAsset: AVAsset = AVURLAsset(URL: self.tempMovieURL!, options: nil)
//
// let compressionSettings = [
// //AVVideoMaxKeyFrameIntervalKey: 1,
// AVVideoAverageBitRateKey: 10 * 1000000
// ]
//
// let outputSettings = [
// AVVideoCodecKey: AVVideoCodecH264,
// AVVideoWidthKey: NSNumber(int: self.width),
// AVVideoHeightKey: NSNumber(int: self.height),
// AVVideoCompressionPropertiesKey: compressionSettings
// ]
//
// var videoWriterInput: AVAssetWriterInput = AVAssetWriterInput(mediaType: AVMediaTypeVideo, outputSettings:outputSettings);
// videoWriterInput.expectsMediaDataInRealTime = true
// videoWriter.addInput(videoWriterInput)
//
// var reader: AVAssetReader = try! AVAssetReader(asset: avAsset);
//
// var videoTrack: AVAssetTrack = avAsset.tracksWithMediaType(AVMediaTypeVideo)[0]
// videoWriterInput.transform = CGAffineTransform.init(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: videoTrack.naturalSize.height)
//
// let videoOptions = [kCVPixelBufferPixelFormatTypeKey as String: NSNumber(unsignedInt: kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange)];
// let asset_reader_output: AVAssetReaderTrackOutput = AVAssetReaderTrackOutput(track: videoTrack, outputSettings: videoOptions)
// reader.addOutput(asset_reader_output)
// //audio setup
//
// var audioWriterInput: AVAssetWriterInput = AVAssetWriterInput(mediaType: AVMediaTypeAudio, outputSettings:nil);
//
// var audioReader: AVAssetReader = try! AVAssetReader(asset: avAsset);
// var audioTrack: AVAssetTrack = avAsset.tracksWithMediaType(AVMediaTypeAudio)[0]
// var readerOutput: AVAssetReaderOutput = AVAssetReaderTrackOutput(track: audioTrack, outputSettings: nil);
// audioReader.addOutput(readerOutput)
// audioWriterInput.expectsMediaDataInRealTime = false
// videoWriter.addInput(audioWriterInput);
// videoWriter.startWriting();
// videoWriter.startSessionAtSourceTime(kCMTimeZero)
// reader.startReading();
//
//
// videoWriterInput.requestMediaDataWhenReadyOnQueue(dispatch_queue_create("assetAudioWriterQueue", nil), usingBlock: { () -> Void in
// while videoWriterInput.readyForMoreMediaData {
// var sampleBuffer: CMSampleBufferRef?;
//
// if reader.status == AVAssetReaderStatus.Reading{
// sampleBuffer = asset_reader_output.copyNextSampleBuffer();
// if sampleBuffer != nil {
// let result: Bool = videoWriterInput.appendSampleBuffer(sampleBuffer!);
// if !result {
// reader.cancelReading()
// }
// }
// }
// else {
// videoWriterInput.markAsFinished();
// switch reader.status {
// case AVAssetReaderStatus.Reading:
// break;
// // the reader has more for other tracks, even if this one is done
//
// case AVAssetReaderStatus.Completed:
// // your method for when the conversion is done
// // should call finishWriting on the writer
// //hook up audio track
// audioReader.startReading()
// videoWriter.startSessionAtSourceTime(kCMTimeZero)
// var mediaInputQueue: dispatch_queue_t = dispatch_queue_create("mediaInputQueue", nil)
// audioWriterInput.requestMediaDataWhenReadyOnQueue(mediaInputQueue, usingBlock: {() -> Void in
// NSLog("Request")
// NSLog("Asset Writer ready :%d", audioWriterInput.readyForMoreMediaData)
// while audioWriterInput.readyForMoreMediaData {
// var nextBuffer: CMSampleBufferRef?;
// if audioReader.status == AVAssetReaderStatus.Reading {
// NSLog("Ready")
// nextBuffer = readerOutput.copyNextSampleBuffer()
// if nextBuffer != nil {
// NSLog("NextBuffer")
// audioWriterInput.appendSampleBuffer(nextBuffer!)
// }
// } else {
// audioWriterInput.markAsFinished()
// switch audioReader.status {
// case AVAssetReaderStatus.Completed:
// videoWriter.finishWritingWithCompletionHandler({ () -> Void in
// if(handler != nil) {
// handler(status: status!);
// }
// })
// break;
// default:
// break;
// }
// }
// }
// })
// break;
// case AVAssetReaderStatus.Failed:
// videoWriter.cancelWriting()
// break;
//
// default:
// break;
// }
// }
// }
//
// })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment