213 votes

Comment ajouter un nouvel audio (non mixé) dans une vidéo en utilisant ffmpeg ?

J'ai utilisé une commande comme :

ffmpeg -i video.avi -i audio.mp3 -vcodec codec -acodec codec output_video.avi -newaudio

dans la dernière version pour ajouter une nouvelle piste audio à la vidéo (pas de mixage).

Mais j'ai mis à jour le ffmpeg à la dernière version ( ffmpeg version git-2012-06-16-809d71d ) et maintenant, dans cette version, le paramètre -newaudio ne fonctionne pas.

Dites-moi s'il vous plaît comment je peux ajouter un nouvel audio à ma vidéo (pas de mixage) en utilisant ffmpeg .

0voto

Waqleh Points 1048

Si vous utilisez une ancienne version de FFMPEG et que vous ne pouvez pas la mettre à jour, vous pouvez procéder comme suit :

ffmpeg -i PATH/VIDEO_FILE_NAME.mp4 -i PATH/AUDIO_FILE_NAME.mp3 -vcodec copy -shortest DESTINATION_PATH/NEW_VIDEO_FILE_NAME.mp4

Remarquez que j'ai utilisé -vcodec

0voto

Hangman Points 392

Code pour ajouter de l'audio à une vidéo en utilisant ffmpeg.

Si la longueur de l'audio est supérieure à la longueur de la vidéo, il coupera l'audio à la longueur de la vidéo. Si vous voulez l'audio complet dans la vidéo, supprimez -shortest de la commande.

String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy", ,outputFile.getPath()};

private void execFFmpegBinaryShortest(final String[] command) {

            final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");

            String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};

            try {

                ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
                    @Override
                    public void onFailure(String s) {
                        System.out.println("on failure----"+s);
                    }

                    @Override
                    public void onSuccess(String s) {
                        System.out.println("on success-----"+s);
                    }

                    @Override
                    public void onProgress(String s) {
                        //Log.d(TAG, "Started command : ffmpeg "+command);
                        System.out.println("Started---"+s);

                    }

                    @Override
                    public void onStart() {

                        //Log.d(TAG, "Started command : ffmpeg " + command);
                        System.out.println("Start----");

                    }

                    @Override
                    public void onFinish() {
                        System.out.println("Finish-----");

                    }
                });
            } catch (FFmpegCommandAlreadyRunningException e) {
                // do nothing for now
                System.out.println("exceptio :::"+e.getMessage());
            }

        }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X