2013-02-13 36 views
2

我正在使用GPUImage框架,通過使用GPUImageVideoCamera和GPUImageMovieWriter實時啓用各種濾鏡,以緊密的間隔一個接一個地記錄多個視頻。使用GPUImageMovieWriter在錄製的開始和結束時錄製帶有音頻的視頻而不匆忙?

當我錄製視頻,視頻猛地(凍結半個世紀秒)開始,以挺舉也結束。我知道背後的原因是我將movieWriter對象傳遞給VideoCamera的audioEncodingtarget的語句。

所以對我來說,當我拍攝的多部影片一個接一個(與GPUImageMovieWriter不同的對象),視頻預覽視圖凍結在開始和每個記錄的結束。

如果我刪除了音頻編碼目標語句,條件顯着改善,但我當然沒有得到音頻。

目前我使用的是AVAudioRecorder同時記錄保存音軌,但我相信這不是一個理想的解決辦法。

有什麼辦法可以解決這個問題。

- 我看了一下蘋果公司的RosyWriter例子,他們的應用程序幾乎同樣工作,但幾乎可以穩定地保持在30 fps的速度。我試圖使用RosyWriter代碼(在刪除添加紫色效果的代碼後)保存所需的視頻,同時向用戶顯示GPUImageVideoCamera的過濾視圖,但徒勞無功。應用未修改的rosywriter代碼只記錄兩個視頻,其餘視頻失敗。我也嘗試從GPUImageVideoCamera傳入拍攝會話的rosywriter代碼,但只獲取帶有黑色框架和無音頻的視頻。

請幫助我怎樣才能記錄GPUImage過濾視頻與音頻沒有這個急躁。在此先感謝

+0

嗨高拉夫,你找到這個問題的任何解決方案? – Hindu 2013-07-15 12:26:44

+0

@kokx我沒有找到任何解決方案,但我已經使用瞭解決方法。我不是一個接一個地記錄多個視頻,而是記錄一個長視頻,並在所需的持續時間內保存NSTimeinterval。之後,我使用保存的時間間隔創建所需的視頻。但請注意,使用GPUImage錄製長時間的視頻會使設備變熱。希望有所幫助。 – 2013-07-16 10:15:35

+0

感謝您的回覆......,我會嘗試。 – Hindu 2013-07-16 12:15:10

回答

0

我面臨同樣的問題,這裏是我的解決方法。

正如您所指出的,發生此問題是因爲s​​etAudioEncodingTarget方法在內部調用addAudioInputsAndOutputs來將音頻輸入/輸出設置爲捕獲會話。

爲了避免這個問題,我創建justSetAudioEncodingTarget方法攝影機下面, (上GPUImageVideoCamera.m)

// just set 
-(void)justSetAudioEncodingTarget:(GPUImageMovieWriter*)newValue { 

if(newValue == nil) { 
    return; 
} 
addedAudioInputsDueToEncodingTarget = YES; 

[super setAudioEncodingTarget:newValue]; 
} 

下面的步驟是我的方案,我檢查了它工作順利。

叫攝影機的addAudioInputsAndOutputs視頻攝像機創建之後。 這是不正確的開始錄製之前。 :)

設置MovieWriter到攝影機由justSetAudioEncodingTarget我上面做。