2015-11-10 54 views
0

我正在嘗試使用Brad Larson的GPUImage庫來錄製視頻文件。到目前爲止,我遇到的問題是下面的一段代碼:GPUImage和AVAssetWriter將文件寫入哪裏?

NSString *pathToMovie = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/Movie.m4v"]; 
unlink([pathToMovie UTF8String]); // If a file already exists, AVAssetWriter won't let you record new frames, so delete the old movie 
NSURL *movieURL = [NSURL fileURLWithPath:pathToMovie]; 
movieWriter = [[GPUImageMovieWriter alloc] initWithMovieURL:movieURL size:CGSizeMake(480.0, 640.0)]; 

這是直接從他的榜樣,從他的GitHub頁面 https://github.com/BradLarson/GPUImage

拿起現在,我看了看源代碼,我看到他做了通常的AVFoundation的東西 - 創建AVAssetWriter實例併爲其添加輸入。我在這裏的問題是,@「Documents/Movie.m4v」位於何處?我怎樣才能播放這個視頻?或者我怎樣才能訪問它?我知道它位於應用程序包在運行時複製的任意位置。我的目標是能夠將視頻寫入畫廊或至少由我的應用創建的畫廊中的相冊。有誰知道文件正在寫入哪裏?

回答

1

也許我誤解,但電影是在路徑pathToMovie(或URL movieURL

你可以用這樣的事情回放:

#import <AVFoundation/AVFoundation.h> 
#import <AVKit/AVKit.h> 

// later 
AVPlayerViewController *avc = [[AVPlayerViewController alloc] init]; 
avc.player = [[AVPlayer alloc] initWithURL:movieURL]; 
[myViewController presentViewController:avc animated:YES completion:nil]; 

如果你想下載文件到您的計算機上,您可以在Xcode>設備中選擇您的連接設備,然後選擇您的應用程序並下載軟件包。您的電影將位於文檔目錄中。

要保存到圖庫,請執行

// TODO: use completion arguments for a better user experience 
UISaveVideoAtPathToSavedPhotosAlbum(pathToMovie,nil,nil,nil); 
+0

是的你是對的。出於某種原因,我的大腦凍結在那裏,我無法理解如何訪問路徑。 雖然很快,但當我嘗試訪問AVPlayerViewController時,XCode給了我錯誤消息:Unknown typename:AVPlayerViewController。這必須是一個XCode錯誤,因爲我看到它的文檔,並且我已經包含了AVFoundation框架並且正在使用其他AV類 - AVCaptureSession,AVAssetWriter等。 現在我正在使用MPMoviePlayerController來播放視頻,但它被棄用想避開它 – noobuntu

+1

您是否導入過AVKit.h? –

+0

是的,我有。我通過做一個乾淨的然後構建來解決這個問題。我想有些東西被搞糟..感謝你的幫助! – noobuntu