2012-03-05 6 views
1

を終了22を失敗し、私はこのエラーを取得しています:NSTaskはコードの下に使用して、一時的なプロセスココア

NSTask: Task create for path '/Users/media/Library/Developer/Xcode/DerivedData/Manager-gnixeptcszdoubbnfcncumzypwge/Build/Products/Debug/lib' failed: 22, "Invalid argument". Terminating temporary process. 

私はこの背後にいただきました!問題を取得しておりません。 ffmpegPresetLaunchPathため

- (void)startProcessingVideo { 

    NSLog(@"Processing Video Low Resolution"); 

    NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970]; 
    // NSTimeInterval is defined as double 
    NSNumber *timeStampObj = [NSNumber numberWithInt:timeStamp]; 

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
    [formatter setNumberStyle:NSNumberFormatterNoStyle]; 

    NSString *convertNumber = [formatter stringForObjectValue:timeStampObj]; 

    NSLog(@"timeStampObj:: %@", convertNumber); 

    NSString *fileNameNumber = [convertNumber stringByAppendingString:[self genRandStringLength:8]]; 

    NSLog(@"fileNameNumber:::: %@", fileNameNumber); 

    NSString *aString = [[NSString stringWithFormat:@"%@%@%@", thumbnailDirPath,@"/Mobile" ,fileNameNumber] retain]; 

    //NSString *string = [aString stringByAppendingString:@"_H"]; 

    fileNameMP4Mobile = [aString stringByAppendingString:@".mp4"]; 

    NSLog(@"string:::: %@", aString); 

    [lblMessage setStringValue:@"Started!"]; 
    NSTask *task= [NSTask new]; 
    [task setLaunchPath:ffmpegPresetLaunchPath]; 
    [task setArguments:[NSArray arrayWithObjects: 
         @"-y", 
         @"-i", 
         inputFilePath,// @"1.wmv", 
         @"-vcodec", 
         @"libx264", 
         @"-fpre", 
         @"libx264-fast.ffpreset", 
         @"-b", 
         @"500k", 
         @"-s", 
         @"640*480", 
         @"-r", 
         @"30", 
         @"-aspect", 
         @"16:9", 
         @"-ab", 
         @"128k", 
         @"-ac", 
         @"2", 
         @"-ar", 
         @"44100", 
         fileNameMP4Mobile,nil]]; 
    [task setCurrentDirectoryPath:thumbnailDirPath]; 

    NSPipe *outputPipe = [NSPipe pipe]; 
    [task setStandardInput:[NSPipe pipe]]; 
    [task setStandardOutput:outputPipe]; 

    [task launch]; 
    [task waitUntilExit]; 
    [task release]; 

    NSData *outputData = [[outputPipe fileHandleForReading] readDataToEndOfFile]; 
    NSString *outputString = [[[NSString alloc] initWithData:outputData encoding:NSUTF8StringEncoding] autorelease]; 
    [lblMessage setStringValue:@"Video Generated!"]; 

    [self startProcessingVideoHighResolution]; 
} 

値は次のとおりです。のNSLogで

ffmpegPresetLaunchPath = [[NSString stringWithFormat:@"%@%@", currentDir, @"/lib/"] retain]; 

値:

ffmpegPresetLaunchPath::: /Users/media/Library/Developer/Xcode/DerivedData/FileManager-gnixeptcszdoubbnfcncumzypwge/Build/Products/Debug/lib/ 

この問題を解決する助けてください。

+0

'ffmpegPresetLaunchPath'の値を表示してください。それはほぼ間違いを引き起こしています。 – trojanfoe

+0

確認してください、質問を編集しました。 –

答えて

1

正しいファイルを実行していません。あなたはその道を通り過ぎています(たぶん)。

あなたはおそらくのようなものが必要です。

ffmpegPresetLaunchPath = [[NSString stringWithFormat:@"%@%@", currentDir, @"/lib/ffmpeg"] retain]; 

注:それはerror 22よりも明らかだerrnoEINVALが、しかしexec()manpageまたはexecve()manpageにそれへの参照が存在しないので、私はしないでくださいされています。エラーコードだけで原因を特定する方法が分かっている。

+0

Thanx @trojanfoe、あなたは私の一日の仲間を救った:) –

関連する問題