GNU/Linux >> LINUX-Kenntnisse >  >> Linux

PHP-FFMpeg:Mehrere Eingabedateien zulassen (Audio zum Video hinzufügen)

Meine letzte Aufgabe bestand darin, eine Online-Videobearbeitungssoftware ähnlich wie Biteable, Moovly usw. zu entwickeln. Nun, ich wusste, dass ich PHP-FFmpeg verwenden konnte Bibliothek, mit der ich PHP-Skripte schreiben kann und die mit ffmpeg interagieren kann auf dem System installiert. Eine der Anforderungen des Projekts bestand darin, dem ausgewählten Video eine Audiospur hinzuzufügen. Das ffmpeg Befehlszeilentool ermöglicht es mir, mehrere Dateien mit -i einzugeben Streit. Ich kann also einfach sowohl die Audio- als auch die Videodatei als Argument übergeben und die Arbeit ist erledigt. Das Gleiche mit der PHP-FFMpeg-Bibliothek zu erreichen, war jedoch eine Herausforderung. In diesem Tutorial erkläre ich, wie Sie mehrere Eingabedateien in der PHP-FFMpeg-Bibliothek zulassen.

Schauen wir uns den folgenden Befehl an, wobei -i Argument wird verwendet, um mehrere Eingabedateien an ffmpeg zu übergeben Befehl.

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

Aber dasselbe in PHP-FFMpeg-Code zu erreichen, ist nicht einfach. Ich konnte keine relevante Dokumentation finden, die das Verfahren zum Hinzufügen mehrerer Eingabedateien erklärt (-i movie.mp4 -i audio.mp3) .

So lassen Sie mehrere Eingabedateien in PHP-FFMpeg zu

Nach ausgiebiger Suche fand ich eine Lösung auf StackOverflow. Die Lösung besteht darin, den zweiten Eingang als Filter hinzuzufügen. Unten ist die schnelle Lösung des Codes:

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

Unten ist der vollständige Code zum Hinzufügen einer Audiospur zum Video. Stellen Sie sicher, dass movie.mp4, audio.mp3 und php-ffmpeg in dem Pfad verfügbar sind, in dem sich diese Datei befindet.

<?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. So fügen Sie mehrere Hosts in phpMyAdmin hinzu

  2. Wie ändere ich die Erweiterung mehrerer Dateien?

  3. Anderen Benutzern erlauben, die Dateien aus dem Ordner zu kopieren?

  4. Dd:Mehrere Eingabedateien?

  5. Pipe zu mehreren Dateien in der Shell?

So verbinden/verschmelzen Sie mehrere Audiodateien zu einer in Linux

Die nützlichsten FFmpeg-Befehle für die Audio- und Videokonvertierung

Skype findet den Audioeingang nicht?

CSI:Der Fall der fehlenden WAV-Audiodateien auf der FAT32-SD-Karte

Xine Multimedia Software – Spielen Sie Audio- und Videodateien in Ubuntu Linux ab

Ändern von Dateien im laufenden Betrieb unter Linux (Schreiben in eine Eingabedatei in einer Pipe)