Configuration class of FFmpegKit
library. Allows customizing the global library
* options. Provides helper methods to support additional resources.
*/
@interface FFmpegKitConfig : NSObject
/**
*
Enables log and statistics redirection. * *
When redirection is enabled FFmpeg/FFprobe logs are redirected to NSLog and sessions * collect log and statistics entries for the executions. It is possible to define global or * session specific log/statistics callbacks as well. * *
Note that redirection is enabled by default. If you do not want to use its functionality * please use disableRedirection method to disable it. */ + (void)enableRedirection; /** *
Disables log and statistics redirection. * *
When redirection is disabled logs are printed to stderr, all logs and statistics
* callbacks are disabled and FFprobe
's getMediaInformation
methods
* do not work.
*/
+ (void)disableRedirection;
/**
*
Sets and overrides fontconfig
configuration directory.
*
* @param path directory that contains fontconfig configuration (fonts.conf)
* @return zero on success, non-zero on error
*/
+ (int)setFontconfigConfigurationPath:(NSString*)path;
/**
*
Registers the fonts inside the given path, so they become available to use in FFmpeg * filters. * *
Note that you need to build FFmpegKit
with fontconfig
* enabled or use a prebuilt package with fontconfig
inside to be able to use
* fonts in FFmpeg
.
*
* @param fontDirectoryPath directory that contains fonts (.ttf and .otf files)
* @param fontNameMapping custom font name mappings, useful to access your fonts with more
* friendly names
*/
+ (void)setFontDirectory:(NSString*)fontDirectoryPath with:(NSDictionary*)fontNameMapping;
/**
*
Registers the fonts inside the given array of font directories, so they become available * to use in FFmpeg filters. * *
Note that you need to build FFmpegKit
with fontconfig
* enabled or use a prebuilt package with fontconfig
inside to be able to use
* fonts in FFmpeg
.
*
* @param fontDirectoryList array of directories that contain fonts (.ttf and .otf files)
* @param fontNameMapping custom font name mappings, useful to access your fonts with more
* friendly names
*/
+ (void)setFontDirectoryList:(NSArray*)fontDirectoryList with:(NSDictionary*)fontNameMapping;
/**
*
Creates a new named pipe to use in FFmpeg
operations.
*
*
Please note that creator is responsible of closing created pipes. * * @return the full path of the named pipe */ + (NSString*)registerNewFFmpegPipe; /** *
Closes a previously created FFmpeg
pipe.
*
* @param ffmpegPipePath full path of the FFmpeg pipe
*/
+ (void)closeFFmpegPipe:(NSString*)ffmpegPipePath;
/**
*
Returns the version of FFmpeg bundled within FFmpegKit
library.
*
* @return the version of FFmpeg
*/
+ (NSString*)getFFmpegVersion;
/**
* Returns FFmpegKit library version.
*
* @return FFmpegKit version
*/
+ (NSString*)getVersion;
/**
*
Returns whether FFmpegKit release is a Long Term Release or not. * * @return true/yes or false/no */ + (int)isLTSBuild; /** * Returns FFmpegKit library build date. * * @return FFmpegKit library build date */ + (NSString*)getBuildDate; /** *
Sets an environment variable. * * @param variableName environment variable name * @param variableValue environment variable value * @return zero on success, non-zero on error */ + (int)setEnvironmentVariable:(NSString*)variableName value:(NSString*)variableValue; /** *
Registers a new ignored signal. Ignored signals are not handled by FFmpegKit
* library.
*
* @param signal signal to be ignored
*/
+ (void)ignoreSignal:(Signal)signal;
/**
*
Synchronously executes the FFmpeg session provided. * * @param ffmpegSession FFmpeg session which includes command options/arguments */ + (void)ffmpegExecute:(FFmpegSession*)ffmpegSession; /** *
Synchronously executes the FFprobe session provided. * * @param ffprobeSession FFprobe session which includes command options/arguments */ + (void)ffprobeExecute:(FFprobeSession*)ffprobeSession; /** *
Synchronously executes the media information session provided. * * @param mediaInformationSession media information session which includes command options/arguments * @param waitTimeout max time to wait until media information is transmitted */ + (void)getMediaInformationExecute:(MediaInformationSession*)mediaInformationSession withTimeout:(int)waitTimeout; /** *
Starts an asynchronous FFmpeg execution for the given session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments */ + (void)asyncFFmpegExecute:(FFmpegSession*)ffmpegSession; /** *
Starts an asynchronous FFmpeg execution for the given session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an FFmpegSessionCompleteCallback if you want to be notified about the result. * * @param ffmpegSession FFmpeg session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation */ + (void)asyncFFmpegExecute:(FFmpegSession*)ffmpegSession onDispatchQueue:(dispatch_queue_t)queue; /** *
Starts an asynchronous FFprobe execution for the given session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments */ + (void)asyncFFprobeExecute:(FFprobeSession*)ffprobeSession; /** *
Starts an asynchronous FFprobe execution for the given session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an FFprobeSessionCompleteCallback if you want to be notified about the result. * * @param ffprobeSession FFprobe session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation */ + (void)asyncFFprobeExecute:(FFprobeSession*)ffprobeSession onDispatchQueue:(dispatch_queue_t)queue; /** *
Starts an asynchronous FFprobe execution for the given media information session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param waitTimeout max time to wait until media information is transmitted */ + (void)asyncGetMediaInformationExecute:(MediaInformationSession*)mediaInformationSession withTimeout:(int)waitTimeout; /** *
Starts an asynchronous FFprobe execution for the given media information session. * *
Note that this method returns immediately and does not wait the execution to complete. * You must use an MediaInformationSessionCompleteCallback if you want to be notified about the result. * * @param mediaInformationSession media information session which includes command options/arguments * @param queue dispatch queue that will be used to run this asynchronous operation * @param waitTimeout max time to wait until media information is transmitted */ + (void)asyncGetMediaInformationExecute:(MediaInformationSession*)mediaInformationSession onDispatchQueue:(dispatch_queue_t)queue withTimeout:(int)waitTimeout; /** *
Sets a global log callback to redirect FFmpeg/FFprobe logs. * * @param logCallback log callback or nil to disable a previously defined log callback */ + (void)enableLogCallback:(LogCallback)logCallback; /** *
Sets a global statistics callback to redirect FFmpeg statistics. * * @param statisticsCallback statistics callback or nil to disable a previously defined statistics callback */ + (void)enableStatisticsCallback:(StatisticsCallback)statisticsCallback; /** *
Sets a global FFmpegSessionCompleteCallback to receive execution results for FFmpeg sessions. * * @param ffmpegSessionCompleteCallback complete callback or nil to disable a previously defined callback */ + (void)enableFFmpegSessionCompleteCallback:(FFmpegSessionCompleteCallback)ffmpegSessionCompleteCallback; /** *
Returns the global FFmpegSessionCompleteCallback set. * * @return global FFmpegSessionCompleteCallback or nil if it is not set */ + (FFmpegSessionCompleteCallback)getFFmpegSessionCompleteCallback; /** *
Sets a global FFprobeSessionCompleteCallback to receive execution results for FFprobe sessions. * * @param ffprobeSessionCompleteCallback complete callback or nil to disable a previously defined callback */ + (void)enableFFprobeSessionCompleteCallback:(FFprobeSessionCompleteCallback)ffprobeSessionCompleteCallback; /** *
Returns the global FFprobeSessionCompleteCallback set. * * @return global FFprobeSessionCompleteCallback or nil if it is not set */ + (FFprobeSessionCompleteCallback)getFFprobeSessionCompleteCallback; /** *
Sets a global MediaInformationSessionCompleteCallback to receive execution results for MediaInformation sessions. * * @param mediaInformationSessionCompleteCallback complete callback or nil to disable a previously defined * callback */ + (void)enableMediaInformationSessionCompleteCallback:(MediaInformationSessionCompleteCallback)mediaInformationSessionCompleteCallback; /** *
Returns the global MediaInformationSessionCompleteCallback set.
*
* @return global MediaInformationSessionCompleteCallback or nil if it is not set
*/
+ (MediaInformationSessionCompleteCallback)getMediaInformationSessionCompleteCallback;
/**
* Returns the current log level.
*
* @return current log level
*/
+ (int)getLogLevel;
/**
* Sets the log level.
*
* @param level new log level
*/
+ (void)setLogLevel:(int)level;
/**
* Converts int log level to string.
*
* @param level value
* @return string value
*/
+ (NSString*)logLevelToString:(int)level;
/**
* Returns the session history size.
*
* @return session history size
*/
+ (int)getSessionHistorySize;
/**
* Sets the session history size.
*
* @param sessionHistorySize session history size, should be smaller than 1000
*/
+ (void)setSessionHistorySize:(int)sessionHistorySize;
/**
* Returns the session specified with Returns all sessions in the session history.
*
* @return all sessions in the session history
*/
+ (NSArray*)getSessions;
/**
* Clears all, including ongoing, sessions in the session history.
* Note that callbacks cannot be triggered for deleted sessions.
*/
+ (void)clearSessions;
/**
* Returns all FFmpeg sessions in the session history.
*
* @return all FFmpeg sessions in the session history
*/
+ (NSArray*)getFFmpegSessions;
/**
* Returns all FFprobe sessions in the session history.
*
* @return all FFprobe sessions in the session history
*/
+ (NSArray*)getFFprobeSessions;
/**
* Returns all MediaInformation sessions in the session history.
*
* @return all MediaInformation sessions in the session history
*/
+ (NSArray*)getMediaInformationSessions;
/**
* Returns sessions that have the given state.
*
* @return sessions that have the given state from the session history
*/
+ (NSArray*)getSessionsByState:(SessionState)state;
/**
* Returns the active log redirection strategy.
*
* @return log redirection strategy
*/
+ (LogRedirectionStrategy)getLogRedirectionStrategy;
/**
* Sets the log redirection strategy
*
* @param logRedirectionStrategy log redirection strategy
*/
+ (void)setLogRedirectionStrategy:(LogRedirectionStrategy)logRedirectionStrategy;
/**
* Returns the number of async messages that are not transmitted to the callbacks for
* this session.
*
* @param sessionId id of the session
* @return number of async messages that are not transmitted to the callbacks for this session
*/
+ (int)messagesInTransmit:(long)sessionId;
/**
* Converts session state to string.
*
* @param state session state
* @return string value
*/
+ (NSString*)sessionStateToString:(SessionState)state;
/**
* Parses the given command into arguments. Uses space character to split the arguments.
* Supports single and double quote characters.
*
* @param command string command
* @return array of arguments
*/
+ (NSArray*)parseArguments:(NSString*)command;
/**
* Concatenates arguments into a string adding a space character between two arguments.
*
* @param arguments arguments
* @return concatenated string containing all arguments
*/
+ (NSString*)argumentsToString:(NSArray*)arguments;
@end
#endif // FFMPEG_KIT_CONFIG_H
sessionId
from the session history.
*
* @param sessionId session identifier
* @return session specified with sessionId or nil if it is not found in the history
*/
+ (id