30 NSLog(
@"Loading ffmpeg-kit.\n");
50 FFmpegSession* session = [[
FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
55 + (
FFmpegSession*)executeWithArgumentsAsync:(NSArray*)arguments withExecuteCallback:(
ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue {
62 FFmpegSession* session = [[
FFmpegSession alloc] init:arguments withExecuteCallback:executeCallback withLogCallback:logCallback withStatisticsCallback:statisticsCallback];
85 + (
FFmpegSession*)executeAsync:(NSString*)command withExecuteCallback:(
ExecuteCallback)executeCallback onDispatchQueue:(dispatch_queue_t)queue {
106 + (void)
cancel:(
long)sessionId {
114 + (NSArray*)parseArguments:(NSString*)command {
115 NSMutableArray *argumentArray = [[NSMutableArray alloc] init];
116 NSMutableString *currentArgument = [[NSMutableString alloc] init];
118 bool singleQuoteStarted =
false;
119 bool doubleQuoteStarted =
false;
121 for (
int i = 0; i < command.length; i++) {
122 unichar previousChar;
124 previousChar = [command characterAtIndex:(i - 1)];
128 unichar currentChar = [command characterAtIndex:i];
130 if (currentChar ==
' ') {
131 if (singleQuoteStarted || doubleQuoteStarted) {
132 [currentArgument appendFormat: @"%C", currentChar];
133 }
else if ([currentArgument length] > 0) {
134 [argumentArray addObject: currentArgument];
135 currentArgument = [[NSMutableString alloc] init];
137 }
else if (currentChar ==
'\'' && (previousChar == 0 || previousChar !=
'\\')) {
138 if (singleQuoteStarted) {
139 singleQuoteStarted =
false;
140 }
else if (doubleQuoteStarted) {
141 [currentArgument appendFormat: @"%C", currentChar];
143 singleQuoteStarted =
true;
145 }
else if (currentChar ==
'\"' && (previousChar == 0 || previousChar !=
'\\')) {
146 if (doubleQuoteStarted) {
147 doubleQuoteStarted =
false;
148 }
else if (singleQuoteStarted) {
149 [currentArgument appendFormat: @"%C", currentChar];
151 doubleQuoteStarted =
true;
154 [currentArgument appendFormat: @"%C", currentChar];
158 if ([currentArgument length] > 0) {
159 [argumentArray addObject: currentArgument];
162 return argumentArray;
165 + (NSString*)argumentsToString:(NSArray*)arguments {
166 if (arguments == nil) {
170 NSMutableString *
string = [NSMutableString stringWithString:@""];
171 for (
int i=0; i < [arguments count]; i++) {
172 NSString *argument = [arguments objectAtIndex:i];
174 [string appendString:@" "];
176 [string appendString:argument];
void(^ ExecuteCallback)(id< Session > session)
void(^ LogCallback)(Log *log)
void(^ StatisticsCallback)(Statistics *statistics)
void asyncFFmpegExecute:onDispatchQueue:(FFmpegSession *ffmpegSession,[onDispatchQueue] dispatch_queue_t queue)
NSArray * getFFmpegSessions()
void asyncFFmpegExecute:(FFmpegSession *ffmpegSession)
void ffmpegExecute:(FFmpegSession *ffmpegSession)
NSArray * parseArguments:(NSString *command)