首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形处理器Image2音频问题

图形处理器Image2音频问题
EN

Stack Overflow用户
提问于 2017-06-16 19:43:17
回答 1查看 247关注 0票数 1

在使用GPUImage2过滤视频时,我无法获得音频。请帮帮我。提前谢谢。

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

发布于 2017-06-17 19:22:59

此功能未在GPUImage2框架中实现。正如您在MovieInput类源代码中看到的,它标记为TODO:

代码语言:javascript
复制
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示例中的代码片段:

代码语言:javascript
复制
movieOutput = try MovieOutput(URL:fileURL, size:Size(width:480, height:640), liveVideo:true)
camera.audioEncodingTarget = movieOutput

正如您所看到的,您应该设置音频目标,只有在此之后,MovieOutput类才会工作。但同样,MovieInput类不支持AudioEncodingTarget

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44588436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档