-
-
Notifications
You must be signed in to change notification settings - Fork 896
Tips
Since v4.3, overloaded execute method with delimiter parameter is deprecated and default execute method is enhanced to support single and double quotes. You can safely use the default execute method.
execute method in MobileFFmpeg API is overloaded and has an optional delimiter parameter. Delimiter defines how the command string will be split into arguments. When delimiter is not specified the space character is used as the default delimiter. In that case, if one or more of your command arguments include a space character, in filename path or in -filter_complex block, then your command string will be split into invalid arguments and execution will fail.
Unfortunately, quotation marks are not supported by MobileFFmpeg. You can not use them to define arguments, so they won't help you on fixing this.
You have two options:
-
You can split your command string into array yourself and call appropriate execute method:
Android:
int execute(String[] arguments)iOS / tvOS:
(int)executeWithArguments: (NSArray*)arguments -
Or use a different delimiter character in your command string and call
executeby specifying it.Android:
FFmpeg.execute("-i~file1.mp4~-c:v~mpeg4~file2.mp4", "~");iOS / tvOS:
[MobileFFmpeg execute: @"-i~file1.mp4~-c:v~mpeg4~file2.mp4", @"~"];
MobileFFmpeg packages specified in Android c++ dependency guide include libc++_shared.so library. If a second library which also includes libc++_shared.so is added as a dependency, gradle fails with More than one file was found with OS independent path 'lib/x86/libc++_shared.so' error message.
You can fix this error by adding the following block into your build.gradle.
android {
packagingOptions {
pickFirst 'lib/x86/libc++_shared.so'
pickFirst 'lib/x86_64/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
}
}
ffmpeg requires a valid fontconfig configuration to render subtitles. Unfortunately, Android does not include a default fontconfig configuration. Therefore, if you do not register a font or specify a fontconfig configuration under Android, then burning process will not produce any errors but subtitles won't be burned into your file.
You can overcome this behaviour by registering a font using Config.setFontDirectory method or specifying your own fontconfig configuration using Config.setFontconfigConfigurationPath method.
ffmpeg requires a valid fontconfig configuration to render text while using drawtext filter. As described in #3, Android does not include a default fontconfig configuration. So, if you do not register a font or specify a fontconfig configuration under Android, then drawtext filter will fail with the following error.
Cannot find a valid font for the family Sans
Error initializing filter 'drawtext'
Error reinitializing filters!
Failed to inject frame into filter network: No such file or directory
You can resolve this error by registering a font using Config.setFontDirectory method or specifying your own fontconfig configuration using Config.setFontconfigConfigurationPath method.
Copyright (c) 2018-2021 MobileFFmpeg