selenide-video-recorder 7.10.0 error when try to start ffmpeg software

51 views
Skip to first unread message

Vincent Daburon

unread,
Aug 26, 2025, 11:06:49 AMAug 26
to selenide
Hi,
I try the selenide-video-recorder v7.10.0 on my Windows 11 PC
But i have an exception because the binary ffmpeg is not find, see Exception Stack.
Did i need to install manually the ffmpeg software on my PC and change the PATH ?



2025-08-26T16:55:15:100 [main] INFO WebDriverFactory - Selenide 7.10.0 / Selenium 4.33.0 / chrome 139.0.7258.128 windows

2025-08-26T16:56:10:743 [main] INFO SeleniumUtils - embedVideoScenario avant videoRecorder.finish() pour declencher l'encodage
2025-08-26T16:56:10:770 [main] INFO RunProcessFunction - ffmpeg -version
2025-08-26T16:56:10:773 [main] ERROR VideoMerger - Failed to generate video C:\usr\vdaburon\dev\intellij_idea\tests_non_regression_auto\target\reports\video.1756220112189.0.mp4 from 430 screenshots in target\reports\video.1756220112189.0.screenshots
java.io.IOException: Cannot run program "ffmpeg": CreateProcess error=2, Le fichier spécifié est introuvable
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)
at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1073)
at net.bramp.ffmpeg.RunProcessFunction.run(RunProcessFunction.java:37)
at net.bramp.ffmpeg.FFcommon.version(FFcommon.java:65)
at net.bramp.ffmpeg.FFmpeg.version(FFmpeg.java:31)
at net.bramp.ffmpeg.FFmpeg.<init>(FFmpeg.java:95)
at net.bramp.ffmpeg.FFmpeg.<init>(FFmpeg.java:82)
at org.selenide.videorecorder.core.VideoMerger.generateVideo(VideoMerger.java:62)
at org.selenide.videorecorder.core.VideoMerger.finish(VideoMerger.java:100)
at org.selenide.videorecorder.core.VideoRecorder.finish(VideoRecorder.java:91)
at fr.tf.cucumber.SeleniumUtils.embedVideoScenario(SeleniumUtils.java:309)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)

Regards.
Vincent DAB.

Vincent Daburon

unread,
Aug 26, 2025, 11:12:50 AMAug 26
to selenide
Ok i read only 
not
https://selenide.org/2025/08/20/selenide-7.10.0/

i don't see :

Important:

  1. Now the video recorder requires ffmpeg to be installed on the computer.
  2. The video file extension has changed from webm to mp4.
 

Andrei Solntsev

unread,
Aug 26, 2025, 11:20:02 AMAug 26
to Vincent Daburon, selenide
Hi Vincent!
Thanks, I've updated the release description and https://github.com/selenide/selenide/blob/main/CHANGELOG.md as well.

Andrei Solntsev


--
You received this message because you are subscribed to the Google Groups "selenide" group.
To unsubscribe from this group and stop receiving emails from it, send an email to selenide+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/selenide/dc4ed34f-3bdd-446c-be17-063833bc19abn%40googlegroups.com.
Message has been deleted
Message has been deleted

Vincent Daburon

unread,
Aug 29, 2025, 5:20:43 AMAug 29
to selenide
Hi,
To use ffmpeg without change the PATH.
In my maven project i add :
1) ffmpeg binary in my project in the src/test/resources : <PROJECT_HOME>/src/test/resource/ffmpeg-8.0-essentials-win-x64.exe

2) create profiles :
<profile>
<id>ffmpeg_windows</id>
<properties>
    <ffmpeg.binary.path>${project.build.directory}/test-classes/ffmpeg-8.0-essentials-win-x64.exe</ffmpeg.binary.path>
</properties>
</profile>
<profile>
<id>ffmpeg_linux</id>
<properties>
   <ffmpeg.binary.path>${project.build.directory}/test-classes/ffmpeg-8.0-essentials-linux</ffmpeg.binary.path>
</properties>
</profile>

3) And declare the environment variable  FFMPEG in my pom.xml

groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.3</version>
<configuration>
<systemPropertyVariables>
<org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
...
</systemPropertyVariables>
<environmentVariables>
<FFMPEG>${ffmpeg.binary.path}</FFMPEG>
</environmentVariables>
</configuration>
</plugin>

4) When i launch the test, i select a profil likes ffmpeg_windows

It's work on Windows but not yet test on Linux 

Regards.
Vincent DAB.
Message has been deleted

Vincent Daburon

unread,
Sep 1, 2025, 9:37:16 AMSep 1
to selenide
Use ffmpeg without change the PATH and not pre-install ffmpeg tool.

For Linux (Almalinux 9.x)
I use the binary static compile from releases :  
https://github.com/btbn/ffmpeg-builds/releases
ffmpeg-master-latest-linux64-gpl.tar.xz  (only binary ffmpeg-n7.1-linux64-x64)

I add this binary in the src/test/resources/ffmpeg-n7.1-linux64-x64
but i need change the permission execute for this binary => use a ant task  chmod

The maven profile is :
<profile>
            <id>ffmpeg_linux</id>
            <properties>
                <ffmpeg.binary.path>${project.build.directory}/test-classes/ffmpeg-n7.1-linux64-x64
                </ffmpeg.binary.path>
            </properties>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-antrun-plugin</artifactId>
                        <version>3.1.0</version>
                        <executions>
                            <execution>
                                <phase>test-compile</phase>
                                <configuration>
                                    <target>
                                        <chmod file="${ffmpeg.binary.path}" perm="u+x"/>
                                        <echo message="Changing u+x permissions of the ffmpeg linux binary : ${ffmpeg.binary.path}"/>
                                    </target>
                                </configuration>
                                <goals>
                                    <goal>run</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

...
<plugin>

  
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>3.5.3</version>
                <configuration>
                    <testFailureIgnore>true</testFailureIgnore>

                    <systemPropertyVariables>
                        <org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
  ...                  </systemPropertyVariables>
                    <environmentVariables>
                        <FFMPEG>${ffmpeg.binary.path}</FFMPEG>
                    </environmentVariables>
                </configuration>
            </plugin>

On Friday, August 29, 2025 at 11:20:48 AM UTC+2 Vincent Daburon wrote:
Hi,
I see in the Java Classe : 
https://github.com/bramp/ffmpeg-cli-wrapper/blob/master/src/main/java/net/bramp/ffmpeg/FFmpeg.java
You could declare a system variable  FFMPEG to set the path to the ffmpeg binary.

public class FFmpeg extends FFcommon {

  public static final String FFMPEG = "ffmpeg";
  public static final String DEFAULT_PATH = firstNonNull(System.getenv("FFMPEG"), FFMPEG);

I put the ffmpeg.exe binary in the maven directory in src/test/resources => the binary will be copied in the target/test-classes directory

In my pom.xml i add this System variable with

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.5.3</version>
<configuration>
<systemPropertyVariables>
<org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
<org.slf4j.simpleLogger.dateTimeFormat>yyyy-MM-dd'T'HH:mm:ss:SSS</org.slf4j.simpleLogger.dateTimeFormat>
<org.slf4j.simpleLogger.showShortLogName>true</org.slf4j.simpleLogger.showShortLogName>
<selenide.headless>false</selenide.headless>
<selenide.downloadsFolder>target/downloads</selenide.downloadsFolder>
<selenide.timeout>20000</selenide.timeout>
<selenide.browser>${browser}</selenide.browser>
<selenide.video.enabled>${video.enabled}</selenide.video.enabled>
....
<FFMPEG>${project.build.directory}/test-classes/ffmpeg.exe</FFMPEG>

</systemPropertyVariables>

I see the the value in log
2025-08-27T10:22:11:477 [main] INFO PrTest - selenide.headless=false
2025-08-27T10:22:11:477 [main] INFO PrTest - selenide.browserBinary=C:\Program Files\Google\Chrome\Application\chrome.exe
2025-08-27T10:22:11:478 [main] INFO PrTest - selenide.reportsFolder=target/reports
2025-08-27T10:22:11:478 [main] INFO PrTest - selenide.video.enabled=true
2025-08-27T10:22:11:478 [main] INFO PrTest - selenide.video.save.mode=ALL
2025-08-27T10:22:11:478 [main] INFO PrTest - FFMPEG=C:\dev\intellij_idea\tests_non_regression_auto\target/test-classes/ffmpeg.exe

But when i launch the test, i have an error :
Caused by: java.io.IOException: Cannot run program "ffmpeg": CreateProcess error=2, Le fichier spécifié est introuvable
        at java.base/java.lang.ProcessBuilder.start(ProcessBuilder.java:1143)


1) Why my System variable FFMPEG is not used ?
2) How set the PATH to ffmpeg binary without change the Windows PATH ?
3) How can i add the ffmpeg.exe directly in my maven project ?

The main problem will be how to launch ffmpeg in a GitLab Runner in docker with java maven and chrome without ffmpeg?

Regards.
Vincent DAB.

On Tuesday, August 26, 2025 at 5:20:02 PM UTC+2 andrei....@gmail.com wrote:
Reply all
Reply to author
Forward
0 new messages