Recherche avancée

Médias (3)

Mot : - Tags -/collection

Autres articles (54)

  • List of compatible distributions

    26 avril 2011, par

    The table below is the list of Linux distributions compatible with the automated installation script of MediaSPIP. Distribution nameVersion nameVersion number Debian Squeeze 6.x.x Debian Weezy 7.x.x Debian Jessie 8.x.x Ubuntu The Precise Pangolin 12.04 LTS Ubuntu The Trusty Tahr 14.04
    If you want to help us improve this list, you can provide us access to a machine whose distribution is not mentioned above or send the necessary fixes to add (...)

  • Publier sur MédiaSpip

    13 juin 2013

    Puis-je poster des contenus à partir d’une tablette Ipad ?
    Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir

  • MediaSPIP Player : les contrôles

    26 mai 2010, par

    Les contrôles à la souris du lecteur
    En plus des actions au click sur les boutons visibles de l’interface du lecteur, il est également possible d’effectuer d’autres actions grâce à la souris : Click : en cliquant sur la vidéo ou sur le logo du son, celui ci se mettra en lecture ou en pause en fonction de son état actuel ; Molette (roulement) : en plaçant la souris sur l’espace utilisé par le média (hover), la molette de la souris n’exerce plus l’effet habituel de scroll de la page, mais diminue ou (...)

Sur d’autres sites (7731)

  • Ffmpeg- Split video into 30 seconds parts in android

    22 novembre 2019, par Corgi Mogi

    I am working on a project. In which I want to split the video into 30 sec equal parts. If the video is 45 sec long than ideally in 30 and 15-sec parts. I already created a method which takes the starting and the ending point and run the Ffmpeg command to cut the video. This is what I created so far

      private void executeCutVideoCommand(int startMs, int endMs) {
           File moviesDir = Environment.getExternalStoragePublicDirectory(
                   Environment.DIRECTORY_MOVIES
           );

           String filePrefix = "cut_video";
           String fileExtn = ".mp4";
           String yourRealPath = getPath(VideoCutterActivity.this, selectedVideoUri);
           File dest = new File(moviesDir, filePrefix + fileExtn);
           int fileNo = 0;
           while (dest.exists()) {
               fileNo++;
               dest = new File(moviesDir, filePrefix + fileNo + fileExtn);
           }

           filePath = dest.getAbsolutePath();
           String[] complexCommand = {"-ss", "" + startMs / 1000, "-y", "-i", yourRealPath, "-t", "" + (endMs - startMs) / 1000,"-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath};

           execFFmpegBinary(complexCommand);
           MediaScannerConnection.scanFile(VideoCutterActivity.this,
                   new String[] { filePath },
                   null,
                   new MediaScannerConnection.OnScanCompletedListener() {

                       public void onScanCompleted(String path, Uri uri) {

                           Log.i("ExternalStorage", "Scanned " + path + ":");
                           Log.i("ExternalStorage", "-> uri=" + uri);
                       }
                   });


       }

       /**
        * Executing ffmpeg binary
        */
       private void execFFmpegBinary(final String[] command) {
           try {
               ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
                   @Override
                   public void onFailure(String s) {
                       Log.d(TAG, "FAILED with output : " + s);
                   }

                   @Override
                   public void onSuccess(String s) {
                       Log.d(TAG, "SUCCESS with output : " + s);
                           Intent intent = new Intent(VideoCutterActivity.this, PreviewActivity.class);
                           intent.putExtra(FILEPATH, filePath);
                           startActivity(intent);
                   }

                   @Override
                   public void onProgress(String s) {
                       progressDialog.setMessage("progress : " + s);
                   }

                   @Override
                   public void onStart() {
                       progressDialog.setMessage("Processing...");
                       progressDialog.show();
                   }

                   @Override
                   public void onFinish() {
                       progressDialog.dismiss();


                   }
               });
           } catch (FFmpegCommandAlreadyRunningException e) {
               // do nothing for now
           }
       }

    i tried to add a loop in method Calling But than app crashes

       cutVideo.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {

                   choice = 2;

                   if (selectedVideoUri != null) {
                       int start,end;
                       for (int i=0;i<=duration;i=i+30){
                           start=i;
                           end=start+30;
                           executeCutVideoCommand(start,end);

                       }
    //                    executeCutVideoCommand(rangeSeekBar.getSelectedMinValue().intValue() * 1000, rangeSeekBar.getSelectedMaxValue().intValue() * 1000);

                   } else
                       Snackbar.make(mainlayout, "Please upload a video", 4000).show();
               }
           });


       }

    I hope now you can what i want to do. I want to Ffmpeg command or method which split the video into 30-sec parts and place them on the given filepath. Let me know if we you wanna know more about the code. Help is much appreciated

  • Split the video in 30 second equal parts in android using the Ffmpeg

    21 novembre 2019, par corgiwooer

    I am on a video editing project. In which I want to edit the video into 30 sec equal parts. Right now I am using the RangeSeekBar to get the starting and ending point which works perfectly fine. But now I want to split the video into equal parts but don’t know how to do it. This is what I tried

    private void executeCutVideoCommand(int startMs, int endMs) {
           File moviesDir = Environment.getExternalStoragePublicDirectory(
                   Environment.DIRECTORY_MOVIES
           );

           String filePrefix = "cut_video";
           String fileExtn = ".mp4";
           String yourRealPath = getPath(VideoCutterActivity.this, selectedVideoUri);
           File dest = new File(moviesDir, filePrefix + fileExtn);
           int fileNo = 0;
           while (dest.exists()) {
               fileNo++;
               dest = new File(moviesDir, filePrefix + fileNo + fileExtn);
           }

           filePath = dest.getAbsolutePath();
           String[] complexCommand = {"-ss", "" + startMs / 1000, "-y", "-i", yourRealPath, "-t", "" + (endMs - startMs) / 1000,"-vcodec", "mpeg4", "-b:v", "2097152", "-b:a", "48000", "-ac", "2", "-ar", "22050", filePath};

           execFFmpegBinary(complexCommand);
           MediaScannerConnection.scanFile(VideoCutterActivity.this,
                   new String[] { filePath },
                   null,
                   new MediaScannerConnection.OnScanCompletedListener() {

                       public void onScanCompleted(String path, Uri uri) {

                           Log.i("ExternalStorage", "Scanned " + path + ":");
                           Log.i("ExternalStorage", "-> uri=" + uri);
                       }
                   });


       }

       /**
        * Executing ffmpeg binary
        */
       private void execFFmpegBinary(final String[] command) {
           try {
               ffmpeg.execute(command, new ExecuteBinaryResponseHandler() {
                   @Override
                   public void onFailure(String s) {
                       Log.d(TAG, "FAILED with output : " + s);
                   }

                   @Override
                   public void onSuccess(String s) {
                       Log.d(TAG, "SUCCESS with output : " + s);
                           Intent intent = new Intent(VideoCutterActivity.this, PreviewActivity.class);
                           intent.putExtra(FILEPATH, filePath);
                           startActivity(intent);
                   }

                   @Override
                   public void onProgress(String s) {
                       progressDialog.setMessage("progress : " + s);
                   }

                   @Override
                   public void onStart() {
                       progressDialog.setMessage("Processing...");
                       progressDialog.show();
                   }

                   @Override
                   public void onFinish() {
                       progressDialog.dismiss();


                   }
               });
           } catch (FFmpegCommandAlreadyRunningException e) {
               // do nothing for now
           }
       }

    The above method takes the starting and the ending point and edits the video.

    I also tried to add for loop for this purpose but it didnt workout for me.

    cutVideo.setOnClickListener(new View.OnClickListener() {
               @Override
               public void onClick(View v) {

                   choice = 2;

                   if (selectedVideoUri != null) {
                       int start,end;
                       for (int i=0;i<=duration;i=i+30){
                           start=i;
                           end=start+30;
                           executeCutVideoCommand(start,end);

                       }
    //                    executeCutVideoCommand(rangeSeekBar.getSelectedMinValue().intValue() * 1000, rangeSeekBar.getSelectedMaxValue().intValue() * 1000);

                   } else
                       Snackbar.make(mainlayout, "Please upload a video", 4000).show();
               }
           });

    Please can anyone tell me how to do it. Help is much appreciated

  • How could I add an overlay to a video based on mouse cursor coordinates ?

    5 mars 2023, par Dima

    I am making a web app, where the user clicks through some images while talking about them and pointing things out with the cursor. The audio, timestamps of image changes, and mouse cursor coordinates and times are sent to a php script which uses ffmpeg to make a slideshow from the images and audio.

    


    Then it runs another ffmpeg command to overlay a moving image representing the cursor hundreds of times to mimic the user's mouse movements.

    


    Here is an example command that inserts the mouse overlay :

    


    ffmpeg \
  -i ../tmp/6400d9c21a62d.mp4 \
  -i ../assets/mouse-circle.png \
  -filter_complex "[0:v][1:v]overlay=enable='between=(t,0.627,0.874)':x=777.648+(t-0.627)*0.000/0.247:y=937.572+(t-0.627)*0.000/0.247[a1]; \
    [a1][1:v]overlay=enable='between=(t,0.874,0.914)':x=777.648+(t-0.874)*0.000/0.040:y=937.572+(t-0.874)*-1.223/0.040[a2]; \
    [a2][1:v]overlay=enable='between=(t,0.914,0.936)':x=777.648+(t-0.914)*0.000/0.022:y=936.349+(t-0.914)*0.000/0.022[a3]; \
    [a3][1:v]overlay=enable='between=(t,0.936,0.945)':x=777.648+(t-0.936)*0.000/0.009:y=936.349+(t-0.936)*-1.223/0.009[a4]; \
    [a4][1:v]overlay=enable='between=(t,0.945,0.966)':x=777.648+(t-0.945)*0.000/0.021:y=935.127+(t-0.945)*-1.223/0.021[a5]; \
    [a5][1:v]overlay=enable='between=(t,0.966,0.976)':x=777.648+(t-0.966)*0.000/0.010:y=933.904+(t-0.966)*-1.223/0.010[a6]; \
    [a6][1:v]overlay=enable='between=(t,0.976,0.999)':x=777.648+(t-0.976)*0.000/0.023:y=932.682+(t-0.976)*0.000/0.023[a7]; \
    [a7][1:v]overlay=enable='between=(t,0.999,1.019)':x=777.648+(t-0.999)*1.227/0.020:y=932.682+(t-0.999)*-1.223/0.020[a8]; \
    [a8][1:v]overlay=enable='between=(t,1.019,1.039)':x=778.875+(t-1.019)*0.000/0.020:y=931.459+(t-1.019)*-1.223/0.020[a9]; \
    [a9][1:v]overlay=enable='between=(t,1.039,1.091)':x=778.875+(t-1.039)*0.000/0.052:y=930.236+(t-1.039)*0.000/0.052[a10]; \
    [a10][1:v]overlay=enable='between=(t,1.091,1.142)':x=778.875+(t-1.091)*0.000/0.051:y=930.236+(t-1.091)*-1.223/0.051[a11]; \
    [a11][1:v]overlay=enable='between=(t,1.142,1.152)':x=778.875+(t-1.142)*0.000/0.010:y=929.014+(t-1.142)*-1.223/0.010[a12]; \
    [a12][1:v]overlay=enable='between=(t,1.152,1.161)':x=778.875+(t-1.152)*0.000/0.009:y=927.791+(t-1.152)*-1.223/0.009[a13]; \
    [a13][1:v]overlay=enable='between=(t,1.161,1.173)':x=778.875+(t-1.161)*2.454/0.012:y=926.569+(t-1.161)*-3.668/0.012[a14]; \
    [a14][1:v]overlay=enable='between=(t,1.173,1.184)':x=781.329+(t-1.173)*0.000/0.011:y=922.901+(t-1.173)*-8.558/0.011[a15]; \
    [a15][1:v]overlay=enable='between=(t,1.184,1.193)':x=781.329+(t-1.184)*0.000/0.009:y=914.343+(t-1.184)*-4.890/0.009[a16]; \
    [a16][1:v]overlay=enable='between=(t,1.193,1.203)':x=781.329+(t-1.193)*0.000/0.010:y=909.452+(t-1.193)*-3.668/0.010[a17]; \
    [a17][1:v]overlay=enable='between=(t,1.203,1.213)':x=781.329+(t-1.203)*0.000/0.010:y=905.784+(t-1.203)*-8.558/0.010[a18]; \
    [a18][1:v]overlay=enable='between=(t,1.213,1.223)':x=781.329+(t-1.213)*0.000/0.010:y=897.226+(t-1.213)*-4.890/0.010[a19]; \
    [a19][1:v]overlay=enable='between=(t,1.223,1.234)':x=781.329+(t-1.223)*0.000/0.011:y=892.336+(t-1.223)*-3.668/0.011[a20]; \
    [a20][1:v]overlay=enable='between=(t,1.234,1.246)':x=781.329+(t-1.234)*0.000/0.012:y=888.668+(t-1.234)*-8.558/0.012[a21]; \
    [a21][1:v]overlay=enable='between=(t,1.246,1.256)':x=781.329+(t-1.246)*0.000/0.010:y=880.110+(t-1.246)*-3.668/0.010[a22]; \
    [a22][1:v]overlay=enable='between=(t,1.256,1.265)':x=781.329+(t-1.256)*0.000/0.009:y=876.442+(t-1.256)*-4.890/0.009[a23]; \
    [a23][1:v]overlay=enable='between=(t,1.265,1.282)':x=781.329+(t-1.265)*0.000/0.017:y=871.551+(t-1.265)*-8.558/0.017[a24]; \
    [a24][1:v]overlay=enable='between=(t,1.282,1.298)':x=781.329+(t-1.282)*1.227/0.016:y=862.993+(t-1.282)*-8.558/0.016[a25]; \
    [a25][1:v]overlay=enable='between=(t,1.298,1.316)':x=782.556+(t-1.298)*0.000/0.018:y=854.435+(t-1.298)*-8.558/0.018[a26]; \
    [a26][1:v]overlay=enable='between=(t,1.316,1.331)':x=782.556+(t-1.316)*2.454/0.015:y=845.877+(t-1.316)*-8.558/0.015[a27]; \
    [a27][1:v]overlay=enable='between=(t,1.331,1.349)':x=785.010+(t-1.331)*0.000/0.018:y=837.318+(t-1.331)*-3.668/0.018[a28]; \
    [a28][1:v]overlay=enable='between=(t,1.349,1.365)':x=785.010+(t-1.349)*2.454/0.016:y=833.651+(t-1.349)*-13.449/0.016[a29]; \
    [a29][1:v]overlay=enable='between=(t,1.365,1.382)':x=787.464+(t-1.365)*3.681/0.017:y=820.202+(t-1.365)*-13.449/0.017[a30]; \
    [a30][1:v]overlay=enable='between=(t,1.382,1.399)':x=791.145+(t-1.382)*0.000/0.017:y=806.753+(t-1.382)*-8.558/0.017[a31]; \
    [a31][1:v]overlay=enable='between=(t,1.399,1.415)':x=791.145+(t-1.399)*4.908/0.016:y=798.195+(t-1.399)*-13.449/0.016[a32]; \
    [a32][1:v]overlay=enable='between=(t,1.415,1.433)':x=796.053+(t-1.415)*2.454/0.018:y=784.746+(t-1.415)*-17.116/0.018[a33]; \
    [a33][1:v]overlay=enable='between=(t,1.433,1.449)':x=798.507+(t-1.433)*3.681/0.016:y=767.630+(t-1.433)*-8.558/0.016[a34]; \
    [a34][1:v]overlay=enable='between=(t,1.449,1.466)':x=802.188+(t-1.449)*6.135/0.017:y=759.072+(t-1.449)*-18.339/0.017[a35]; \
    [a35][1:v]overlay=enable='between=(t,1.466,1.482)':x=808.323+(t-1.466)*2.454/0.016:y=740.733+(t-1.466)*-8.558/0.016[a36]; \
    [a36][1:v]overlay=enable='between=(t,1.482,1.499)':x=810.777+(t-1.482)*6.135/0.017:y=732.174+(t-1.482)*-18.339/0.017[a37]; \
    [a37][1:v]overlay=enable='between=(t,1.499,1.516)':x=816.912+(t-1.499)*8.589/0.017:y=713.835+(t-1.499)*-14.671/0.017[a38]; \
    [a38][1:v]overlay=enable='between=(t,1.516,1.532)':x=825.501+(t-1.516)*3.681/0.016:y=699.164+(t-1.516)*-8.558/0.016[a39]; \
    [a39][1:v]overlay=enable='between=(t,1.532,1.549)':x=829.181+(t-1.532)*4.908/0.017:y=690.606+(t-1.532)*-13.449/0.017[a40]; \
    [a40][1:v]overlay=enable='between=(t,1.549,1.565)':x=834.089+(t-1.549)*8.589/0.016:y=677.157+(t-1.549)*-14.671/0.016[a41]; \
    [a41][1:v]overlay=enable='between=(t,1.565,1.583)':x=842.678+(t-1.565)*2.454/0.018:y=662.486+(t-1.565)*-8.558/0.018[a42]; \
    [a42][1:v]overlay=enable='between=(t,1.583,1.599)':x=845.132+(t-1.583)*8.589/0.016:y=653.928+(t-1.583)*-14.671/0.016[a43]; \
    [a43][1:v]overlay=enable='between=(t,1.599,1.616)':x=853.721+(t-1.599)*2.454/0.017:y=639.257+(t-1.599)*-4.890/0.017[a44]; \
    [a44][1:v]overlay=enable='between=(t,1.616,1.632)':x=856.175+(t-1.616)*9.816/0.016:y=634.366+(t-1.616)*-18.339/0.016[a45]; \
    [a45][1:v]overlay=enable='between=(t,1.632,1.649)':x=865.991+(t-1.632)*8.589/0.017:y=616.027+(t-1.632)*-14.671/0.017[a46]; \
    [a46][1:v]overlay=enable='between=(t,1.649,1.666)':x=874.580+(t-1.649)*6.135/0.017:y=601.356+(t-1.649)*-9.781/0.017[a47]; \
    [a47][1:v]overlay=enable='between=(t,1.666,1.682)':x=880.715+(t-1.666)*8.589/0.016:y=591.575+(t-1.666)*-14.671/0.016[a48]; \
    [a48][1:v]overlay=enable='between=(t,1.682,1.699)':x=889.303+(t-1.682)*8.589/0.017:y=576.904+(t-1.682)*-14.671/0.017[a49]; \
    [a49][1:v]overlay=enable='between=(t,1.699,1.716)':x=897.892+(t-1.699)*6.135/0.017:y=562.232+(t-1.699)*-4.890/0.017[a50]; \
    [a50][1:v]overlay=enable='between=(t,1.716,1.732)':x=904.027+(t-1.716)*8.589/0.016:y=557.342+(t-1.716)*-14.671/0.016[a51]; \
    [a51][1:v]overlay=enable='between=(t,1.732,1.749)':x=912.616+(t-1.732)*7.362/0.017:y=542.671+(t-1.732)*-9.781/0.017[a52]; \
    [a52][1:v]overlay=enable='between=(t,1.749,1.766)':x=919.978+(t-1.749)*8.589/0.017:y=532.890+(t-1.749)*-14.671/0.017[a53]; \
    [a53][1:v]overlay=enable='between=(t,1.766,1.782)':x=928.567+(t-1.766)*4.908/0.016:y=518.219+(t-1.766)*-4.890/0.016[a54]; \
    [a54][1:v]overlay=enable='between=(t,1.782,1.799)':x=933.475+(t-1.782)*8.589/0.017:y=513.328+(t-1.782)*-11.003/0.017[a55]; \
    [a55][1:v]overlay=enable='between=(t,1.799,1.815)':x=942.063+(t-1.799)*7.362/0.016:y=502.325+(t-1.799)*-9.781/0.016[a56]; \
    [a56][1:v]overlay=enable='between=(t,1.815,1.832)':x=949.425+(t-1.815)*6.135/0.017:y=492.544+(t-1.815)*-4.890/0.017[a57]; \
    [a57][1:v]overlay=enable='between=(t,1.832,1.849)':x=955.560+(t-1.832)*6.135/0.017:y=487.654+(t-1.832)*-7.336/0.017[a58]; \
    [a58][1:v]overlay=enable='between=(t,1.849,1.866)':x=961.695+(t-1.849)*6.135/0.017:y=480.318+(t-1.849)*-3.668/0.017[a59]; \
    [a59][1:v]overlay=enable='between=(t,1.866,1.883)':x=967.830+(t-1.866)*1.227/0.017:y=476.650+(t-1.866)*-1.223/0.017[a60]; \
    [a60][1:v]overlay=enable='between=(t,1.883,1.900)':x=969.057+(t-1.883)*8.589/0.017:y=475.427+(t-1.883)*-2.445/0.017[a61]; \
    [a61][1:v]overlay=enable='between=(t,1.900,1.916)':x=977.646+(t-1.900)*6.135/0.016:y=472.982+(t-1.900)*-1.223/0.016[a62]; \
    [a62][1:v]overlay=enable='between=(t,1.916,1.933)':x=983.781+(t-1.916)*1.227/0.017:y=471.760+(t-1.916)*0.000/0.017[a63]; \
    [a63][1:v]overlay=enable='between=(t,1.933,1.949)':x=985.008+(t-1.933)*1.227/0.016:y=471.760+(t-1.933)*0.000/0.016[a64]; \
    [a64][1:v]overlay=enable='between=(t,1.949,1.966)':x=986.235+(t-1.949)*1.227/0.017:y=471.760+(t-1.949)*0.000/0.017[a65]; \
    [a65][1:v]overlay=enable='between=(t,1.966,1.983)':x=987.462+(t-1.966)*2.454/0.017:y=471.760+(t-1.966)*0.000/0.017[a66]; \
    [a66][1:v]overlay=enable='between=(t,1.983,2.000)':x=989.916+(t-1.983)*0.000/0.017:y=471.760+(t-1.983)*0.000/0.017[a67]; \
    [a67][1:v]overlay=enable='between=(t,2.000,2.016)':x=989.916+(t-2.000)*0.000/0.016:y=471.760+(t-2.000)*1.223/0.016[a68]; \
    [a68][1:v]overlay=enable='between=(t,2.016,2.033)':x=989.916+(t-2.016)*2.454/0.017:y=472.982+(t-2.016)*2.445/0.017[a69]; \
    [a69][1:v]overlay=enable='between=(t,2.033,2.050)':x=992.370+(t-2.033)*0.000/0.017:y=475.427+(t-2.033)*1.223/0.017[a70]; \
    [a70][1:v]overlay=enable='between=(t,2.050,2.066)':x=992.370+(t-2.050)*2.454/0.016:y=476.650+(t-2.050)*8.558/0.016[a71]; \
    [a71][1:v]overlay=enable='between=(t,2.066,2.082)':x=994.824+(t-2.066)*0.000/0.016:y=485.208+(t-2.066)*7.336/0.016[a72]; \
    [a72][1:v]overlay=enable='between=(t,2.082,2.100)':x=994.824+(t-2.082)*0.000/0.018:y=492.544+(t-2.082)*4.890/0.018[a73]; \
    [a73][1:v]overlay=enable='between=(t,2.100,2.116)':x=994.824+(t-2.100)*3.681/0.016:y=497.434+(t-2.100)*13.449/0.016[a74]; \
    [a74][1:v]overlay=enable='between=(t,2.116,2.134)':x=998.504+(t-2.116)*0.000/0.018:y=510.883+(t-2.116)*7.336/0.018[a75]; \
    [a75][1:v]overlay=enable='between=(t,2.134,2.150)':x=998.504+(t-2.134)*0.000/0.016:y=518.219+(t-2.134)*8.558/0.016[a76]; \
    [a76][1:v]overlay=enable='between=(t,2.150,2.167)':x=998.504+(t-2.150)*0.000/0.017:y=526.777+(t-2.150)*17.116/0.017[a77]; \
    [a77][1:v]overlay=enable='between=(t,2.167,2.183)':x=998.504+(t-2.167)*-7.362/0.016:y=543.893+(t-2.167)*24.452/0.016[a78]; \
    [a78][1:v]overlay=enable='between=(t,2.183,2.200)':x=991.143+(t-2.183)*0.000/0.017:y=568.345+(t-2.183)*8.558/0.017[a79]; \
    [a79][1:v]overlay=enable='between=(t,2.200,2.217)':x=991.143+(t-2.200)*-6.135/0.017:y=576.904+(t-2.200)*23.229/0.017[a80]; \
    [a80][1:v]overlay=enable='between=(t,2.217,2.233)':x=985.008+(t-2.217)*-3.681/0.016:y=600.133+(t-2.217)*14.671/0.016[a81]; \
    [a81][1:v]overlay=enable='between=(t,2.233,2.251)':x=981.327+(t-2.233)*-12.270/0.018:y=614.804+(t-2.233)*36.678/0.018[a82]; \
    [a82][1:v]overlay=enable='between=(t,2.251,2.267)':x=969.057+(t-2.251)*-3.681/0.016:y=651.483+(t-2.251)*14.671/0.016[a83]; \
    [a83][1:v]overlay=enable='between=(t,2.267,2.284)':x=965.376+(t-2.267)*-12.270/0.017:y=666.154+(t-2.267)*36.678/0.017[a84]; \
    [a84][1:v]overlay=enable='between=(t,2.284,2.301)':x=953.106+(t-2.284)*-15.951/0.017:y=702.832+(t-2.284)*31.788/0.017[a85]; \
    [a85][1:v]overlay=enable='between=(t,2.301,2.317)':x=937.156+(t-2.301)*-7.362/0.016:y=734.620+(t-2.301)*14.671/0.016[a86]; \
    [a86][1:v]overlay=enable='between=(t,2.317,2.334)':x=929.794+(t-2.317)*-14.724/0.017:y=749.291+(t-2.317)*25.675/0.017[a87]; \
    [a87][1:v]overlay=enable='between=(t,2.334,2.350)':x=915.070+(t-2.334)*-7.362/0.016:y=774.966+(t-2.334)*15.894/0.016[a88]; \
    [a88][1:v]overlay=enable='between=(t,2.350,2.367)':x=907.708+(t-2.350)*-14.724/0.017:y=790.859+(t-2.350)*25.675/0.017[a89]; \
    [a89][1:v]overlay=enable='between=(t,2.367,2.384)':x=892.984+(t-2.367)*-18.405/0.017:y=816.534+(t-2.367)*20.784/0.017[a90]; \
    [a90][1:v]overlay=enable='between=(t,2.384,2.400)':x=874.580+(t-2.384)*-6.135/0.016:y=837.318+(t-2.384)*11.003/0.016[a91]; \
    [a91][1:v]overlay=enable='between=(t,2.400,2.418)':x=868.445+(t-2.400)*-11.043/0.018:y=848.322+(t-2.400)*9.781/0.018[a92]; \
    [a92][1:v]overlay=enable='between=(t,2.418,2.434)':x=857.402+(t-2.418)*-9.816/0.016:y=858.103+(t-2.418)*8.558/0.016[a93]; \
    [a93][1:v]overlay=enable='between=(t,2.434,2.451)':x=847.586+(t-2.434)*-6.135/0.017:y=866.661+(t-2.434)*4.890/0.017[a94]; \
    [a94][1:v]overlay=enable='between=(t,2.451,2.467)':x=841.451+(t-2.451)*-8.589/0.016:y=871.551+(t-2.451)*4.890/0.016[a95]; \
    [a95][1:v]overlay=enable='between=(t,2.467,2.484)':x=832.862+(t-2.467)*-1.227/0.017:y=876.442+(t-2.467)*1.223/0.017[a96]; \
    [a96][1:v]overlay=enable='between=(t,2.484,2.501)':x=831.635+(t-2.484)*-6.135/0.017:y=877.664+(t-2.484)*3.668/0.017[a97]; \
    [a97][1:v]overlay=enable='between=(t,2.501,2.517)':x=825.501+(t-2.501)*-8.589/0.016:y=881.332+(t-2.501)*2.445/0.016[a98]; \
    [a98][1:v]overlay=enable='between=(t,2.517,2.535)':x=816.912+(t-2.517)*-2.454/0.018:y=883.777+(t-2.517)*1.223/0.018[a99]; \
    [a99][1:v]overlay=enable='between=(t,2.535,2.551)':x=814.458+(t-2.535)*-2.454/0.016:y=885.000+(t-2.535)*2.445/0.016[a100]; \
    [a100][1:v]overlay=enable='between=(t,2.551,2.567)':x=812.004+(t-2.551)*-1.227/0.016:y=887.445+(t-2.551)*0.000/0.016[a101]; \
    [a101][1:v]overlay=enable='between=(t,2.567,2.584)':x=810.777+(t-2.567)*-1.227/0.017:y=887.445+(t-2.567)*0.000/0.017[a102]; \
    [a102][1:v]overlay=enable='between=(t,2.584,2.600)':x=809.550+(t-2.584)*0.000/0.016:y=887.445+(t-2.584)*0.000/0.016[a103]; \
    [a103][1:v]overlay=enable='between=(t,2.600,2.617)':x=809.550+(t-2.600)*-1.227/0.017:y=887.445+(t-2.600)*0.000/0.017[a104]; \
    [a104][1:v]overlay=enable='between=(t,2.617,2.689)':x=808.323+(t-2.617)*0.000/0.072:y=887.445+(t-2.617)*0.000/0.072[a105] \
     \
  " -map "[a105]" -map 0:a:? ../tmp/vid-6400d9c21a62d.mp4 -y


    


    And this is just from a four second video. When I tried to do thirty seconds worth of mouse movements, the command would not even run because there were too many arguments. So I need to come up with another way to add a mouse overlay.

    


    An obvious choice would just be screen recording the user's screen to not have to add a mouse overlay because it would already be there. But then I don't think I can use full resolution pictures in the final video. It will be recordings of the images at whatever resolution the user's screen is set to. (Unless there's a way around this that I don't know about.)

    


    So how could I take a long list of mouse coordinates and timestamps and add an overlay representing a cursor to an existing video ?

    


    Edit : I tried putting everything from the filter-complex argument into a text file and calling it with filter_complex_script instead, as @БаярГончикжапов suggested in comments. Now it at least starts to run, but every time fails with this error :

    


    [Parsed_overlay_1553 @ 0x55caae67f900] [framesync @ 0x55caae6802a8] Sync level 2
[auto_scale_1554 @ 0x55cab4b34b80] Failed to configure output pad on auto_scale_1554
Error reinitializing filters!
Failed to inject frame into filter network: Resource temporarily unavailable
Error while processing the decoded data for stream #1:0
[AVIOContext @ 0x55cab451c900] Statistics: 0 bytes written, 0 seeks, 0 writeouts
[aac @ 0x55cab4523b80] Qavg: 25282.062
[aac @ 0x55cab4523b80] 2 frames left in the queue on closing


    


    It only happens if there are more than 1553 arguments, and changing the arguments for 1553 and surrounding ones doesn't stop the error.