GNU/Linux >> Tutoriels Linux >  >> Linux

PHP-FFMpeg :Autoriser plusieurs fichiers d'entrée (Ajouter de l'audio à la vidéo)

Ma récente mission consistait à développer un logiciel de montage vidéo en ligne similaire à Biteable, Moovly, etc. Eh bien, je savais que je pouvais utiliser PHP-FFmpeg bibliothèque qui me permet d'écrire du script PHP et qui peut interagir avec ffmpeg installé sur le système. L'une des exigences du projet était d'ajouter une piste audio à la vidéo sélectionnée. Le ffmpeg l'outil de ligne de commande me permet d'entrer plusieurs fichiers en utilisant -i argument. Je peux donc simplement passer les fichiers audio et vidéo comme argument et le travail est fait. Cependant, réaliser la même chose en utilisant la bibliothèque PHP-FFMpeg était un défi. Dans ce tutoriel, je vais vous expliquer comment autoriser plusieurs fichiers d'entrée dans la bibliothèque PHP-FFMPeg.

Regardons la commande ci-dessous où -i l'argument est utilisé pour passer plusieurs fichiers d'entrée au ffmpeg commande.

$ffmpeg -i movie.mp4 -i audio.mp3 -codec:a libmp3lame -b:a 128k movie_output.mp4

Mais obtenir la même chose dans le code PHP-FFMpeg n'est pas simple. Je n'ai trouvé aucune documentation pertinente expliquant la procédure pour ajouter plusieurs fichiers d'entrée (-i movie.mp4 -i audio.mp3) .

Comment autoriser plusieurs fichiers d'entrée dans PHP-FFMPeg

Après une recherche approfondie, j'ai trouvé une solution sur StackOverflow. La solution consiste à ajouter la deuxième entrée en tant que filtre. Vous trouverez ci-dessous la solution rapide du code :

$audioSource = 'audio.mp3';
$video->addFilter(new SimpleFilter(['-i ', $audioSource]));

Vous trouverez ci-dessous le code complet d'ajout de piste audio à la vidéo. Assurez-vous que movie.mp4, audio.mp3 et php-ffmpeg sont disponibles dans le chemin où se trouve ce fichier.

<?php

require_once 'vendor/autoload.php';
$ffmpeg = FFMpeg\FFMpeg::create();
$format = new FFMpeg\Format\Video\X264();
$format->setAudioCodec("aac");
$videoFile='movie.mp4';
$audioFile='audio.mp3';
$captionStaticFilePath=$_SERVER['DOCUMENT_ROOT'].'/';
$outputFile='movie_output.mp4';

try{
    $video = $ffmpeg->open($captionStaticFilePath.$videoFile);
    $video->addFilter(new FFMpeg\Filters\Audio\SimpleFilter(['-i', $audioFile]));
    $video->save($format, $captionStaticFilePath.$outputFile);
    die('done');
}catch(Exception $e){
    echo $e->getMessage();die;
}

?>

Linux
  1. Ajouter du texte superposé à la vidéo à l'aide de PHP-FFMPeg

  2. Comment compresser plusieurs fichiers sous Linux

  3. Comment changer l'extension de plusieurs fichiers ?

  4. Les "si" ?

  5. Comment faire pour que l'entrée audio soit toujours le microphone de la webcam ?

Comment joindre/fusionner plusieurs fichiers audio en un seul sous Linux

Les commandes FFmpeg les plus utiles pour la conversion audio et vidéo

Skype ne trouve pas l'entrée audio ?

CSI :Le cas des fichiers audio WAV manquants sur la carte SD FAT32

Logiciel multimédia Xine - Lire des fichiers audio et vidéo dans Ubuntu Linux

Tail plusieurs fichiers distants