2017-06-16 14 views
0

GPUImage2を使用してビデオをフィルタリングしているときに、音声が得られません。私を助けてください。 ありがとうございます。GPU Image2オーディオの問題

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

この機能はGPUImage2フレームワークでは実装されていません。あなたがCameraクラスとaudioEncodingTargetプロパティをチェックする必要が

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 
} 

:あなたはMovieInputクラスのソースコードで見たように、TODOをマーク。あなたは、セットアップのオーディオターゲットをすべきであり、そのMovieOutputクラスが動作する唯一の後に見たよう

movieOutput = try MovieOutput(URL:fileURL, size:Size(width:480, height:640), liveVideo:true) 
camera.audioEncodingTarget = movieOutput 

:ここではSimpleVideoRecorderの例からコード断片です。しかし、再びMovieInputクラスはAudioEncodingTargetをサポートしていません。

+0

これは、保存されたビデオをそのオーディオでフィルタリングすることができないことを意味します。 –

+0

コード変更なし - はい。 –

+0

コードをどのように変更して実装するか考えてください。 –

関連する問題