使用GPUImage2过滤视频时,我没有收到音频。请帮我。 提前谢谢。
movie = try MovieInput(url:url, playAtActualSpeed:false)
let documentDirectory = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first! as String
let uuid1 = CFUUIDCreateString(nil, CFUUIDCreate(nil)) as NSString?
localPath = (documentDirectory as NSString).appendingPathComponent(String(format: "%@.mp4", uuid1!)) as NSString!
print("Filtered Video: %@", localPath)
let fileURL = URL.init(fileURLWithPath: localPath as String)
do {
try FileManager.default.removeItem(at: fileURL)
} catch {
}
movieOutput = try MovieOutput(URL:fileURL, size: Size(width: 720, height: 1280), liveVideo: true)
Filter4 = ColorMatrixFilter()
Filter4.overriddenOutputRotation = Rotation.rotateClockwiseAndFlipVertically
movie --> Filter4 --> renderView
movie.runBenchmark = true
movie.start()
Filter4 --> movieOutput
movieOutput!.startRecording()
答案 0 :(得分:1)
此功能未在GPUImage2框架中实现。正如您在MovieInput
类源代码中看到的那样,它标记为TODO:
public init(asset:AVAsset, playAtActualSpeed:Bool = false, loop:Bool = false) throws {
self.asset = asset
self.playAtActualSpeed = playAtActualSpeed
self.loop = loop
self.yuvConversionShader = crashOnShaderCompileFailure("MovieInput"){try sharedImageProcessingContext.programForVertexShader(defaultVertexShaderForInputs(2), fragmentShader:YUVConversionFullRangeFragmentShader)}
assetReader = try AVAssetReader(asset:self.asset)
let outputSettings:[String:AnyObject] = [(kCVPixelBufferPixelFormatTypeKey as String):NSNumber(value:Int32(kCVPixelFormatType_420YpCbCr8BiPlanarFullRange))]
let readerVideoTrackOutput = AVAssetReaderTrackOutput(track:self.asset.tracks(withMediaType: AVMediaTypeVideo)[0], outputSettings:outputSettings)
readerVideoTrackOutput.alwaysCopiesSampleData = false
assetReader.add(readerVideoTrackOutput)
// TODO: Audio here
}
您需要检查Camera
类和audioEncodingTarget
属性。这是SimpleVideoRecorder示例中的代码片段:
movieOutput = try MovieOutput(URL:fileURL, size:Size(width:480, height:640), liveVideo:true)
camera.audioEncodingTarget = movieOutput
如您所见,您应该设置音频目标,并且只有在MovieOutput
课程可行之后才能设置。但同样MovieInput
课程不支持AudioEncodingTarget
。