NSTask и FFMpeg теряют вывод

Я пытаюсь вызвать ffmpeg из NSTask в Objective-C. Я выполняю команду ffmpeg в терминале, и каждый раз она работает безупречно. Я делаю ту же команду, используя NSTask, и она никогда не дает мне весь вывод. Он обрывает его на полпути к выходу, каждый раз в случайном месте. Вот мой код.

    - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    NSString* ffmpegPath = [[NSBundle mainBundle] pathForResource:@"ffmpeg" ofType:@""];
    NSString* path = @"test.mov";

    NSTask *task = [[NSTask alloc] init];
    NSArray *arguments = [NSArray arrayWithObjects: @"-i", path, nil];
    NSPipe *pipe = [NSPipe pipe];
    NSFileHandle * read = [pipe fileHandleForReading];

    [task setLaunchPath: ffmpegPath];
    [task setArguments: arguments];
    [task setStandardOutput: pipe];
    [task launch];
    [task waitUntilExit];

    NSData* data = [read readDataToEndOfFile];
    NSString* stringOutput = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];


    NSLog(@"%@", stringOutput);
    NSLog(@"%i", [task terminationStatus]);
    NSLog(@"DONE");
}

person Morgan    schedule 16.11.2011    source источник
comment
что это за ffmpeg, который вы сохранили в своем пакете ресурсов, я могу найти только библиотеки (.a), такие как libavcodec.a и т. д..   -  person Swati    schedule 27.12.2012
comment
Это скомпилированное приложение ffmpeg ffmpeg.org.   -  person Morgan    schedule 12.02.2013


Ответы (1)


И так же я понял это. По-видимому, в выводе были символы, отличные от UTF8Characters. Переключил на NSASCIIStringEncoding и вуаля. Магия.

person Morgan    schedule 16.11.2011