When try to record video in real device iOS

when try to record video in real device iOS
then i reinstall also ffmpeg by
brew install ffmpeg

the video is recorded by corrupted 0 byte
it appeared issue
unknown server-side error occurred while processing the command. Original error: ‘ffmpeg’ binary is not found in PATH. Install it using ‘brew install ffmpeg’. Check https://www.ffmpeg.org/download.html for more details.

is it same for you ?

which ffmpeg
/usr/local/bin/ffmpeg

/opt/homebrew/bin/ffmpeg

can i do anything to solve issue ?

No idea. Looks like you have M1 mac?

yes is there binary file can i added to source >

yes. add to path. looks like your problem similar to: https://stackoverflow.com/questions/66666134/how-to-install-homebrew-on-m1-mac

i did static build as https://superuser.com/questions/624561/install-ffmpeg-on-os-x
and now which ffmpeg
/usr/local/bin/ffmpeg

but also the same issue

you did not mention how you start appium? possible environment you start appium does not have all paths.

i stared appium programmatically

Map<String, String> env = new HashMap<>(System. getenv ());

env.put(“JAVA_HOME”, config .getProperty(“JAVA_HOME”));

env.put(“ANDROID_HOME”, config .getProperty(“ANDROID_HOME”));

// build the builder with

builder = new AppiumServiceBuilder();

builder .withAppiumJS( new File( config .getProperty(“Appium_JS_Path”)))

.withIPAddress( config .getProperty(“appium_ip_address”)).usingAnyFreePort()

.withArgument(GeneralServerFlag. SESSION_OVERRIDE )

.withArgument(GeneralServerFlag. LOG_LEVEL , “debug”)

.withArgument(GeneralServerFlag. RELAXED_SECURITY ).withEnvironment(env).withCapabilities(cap);

try {

appiumService = AppiumDriverLocalService. buildService ( builder );

appiumService .start();

} catch (NullPointerException e) {

e.printStackTrace();

}

appiumServiceUrl = appiumService .getUrl().toString();

try {

driver = new IOSDriver( appiumService , cap);

  1. is your ‘env’ contains path to ffmpeg?
  2. if you start appium manually in terminal will it work?

Thanks for great support
i put the path as original in env

env.put(“PATH”, config .getProperty(“PATH”));

and finally it is working

can you ask you another question >> if i must do all steps of WebDriverAgent even few days because i surprised that it is deleted from my device and the appium test script did not work so i idid all steps again https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md

is there a way to save it installed or i must every few days restart these steps again ?

  1. Build WDA you should after every Appium update or install.
  2. About delete WDA from phone. Possible your capabilities doing this when you asking to reset.

check -> Different capabilities for different scenarios

1- i started appium programatically so it means no update or install ??
2- now i added these capabilities >> it means it will not deleted

cap.setCapability(MobileCapabilityType. FULL_RESET , false );

cap.setCapability(MobileCapabilityType. NO_RESET , true )

start programmatically does not count as update or install. it just a command in terminal.

also you can add following capabilities:

capabilities.setCapability(IOSMobileCapabilityType.USE_PREBUILT_WDA, true); // no need to build WDA. in case you build it manually after appium reinstall/install.
capabilities.setCapability(IOSMobileCapabilityType.USE_NEW_WDA, false); // do not update WDA on phone if it exists. use with caution! after reinstall appium you should set it true at least one time

Thanks again for great support