GNU/Linux >> Linux Esercitazione >  >> Linux

PHP-FFMpeg:Consenti più file di input (aggiungi audio al video)

Il mio recente incarico è stato quello di sviluppare un software di editing video online simile a Biteable, Moovly ecc. Beh, sapevo che avrei potuto usare PHP-FFmpeg libreria che mi permette di scrivere script PHP e che può interagire con ffmpeg installato sul sistema. Uno dei requisiti del progetto era aggiungere una traccia audio al video selezionato. Il ffmpeg lo strumento da riga di comando mi consente di inserire più file usando -i discussione. Quindi posso semplicemente passare sia i file audio che quelli video come argomento e il lavoro è fatto. Tuttavia, ottenere lo stesso risultato utilizzando la libreria PHP-FFMpeg è stata una sfida. In questo tutorial, spiegherò come consentire più file di input nella libreria PHP-FFMpeg.

Diamo un'occhiata al comando seguente dove -i argomento viene utilizzato per passare più file di input a ffmpeg comando.

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

Ma ottenere lo stesso risultato nel codice PHP-FFMpeg non è semplice. Non sono riuscito a trovare alcuna documentazione pertinente che spiegasse la procedura per aggiungere più file di input (-i movie.mp4 -i audio.mp3) .

Come consentire più file di input in PHP-FFMpeg

Dopo una ricerca approfondita, ho trovato una soluzione su StackOverflow. La soluzione è aggiungere il secondo input come filtro. Di seguito è riportata la correzione rapida del codice:

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

Di seguito è riportato il codice completo per aggiungere la traccia audio al video. Assicurati che movie.mp4, audio.mp3 e php-ffmpeg siano disponibili nel percorso in cui si trova questo file.

<?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. Come modificare l'estensione di più file?

  2. Elencare i file a cui si accede da un programma?

  3. I "se"?

  4. Come l'ingresso audio deve essere sempre il microfono della webcam?

  5. Tail più file remoti

Come unire/unire più file audio in uno in Linux

I comandi FFmpeg più utili per la conversione di audio e video

Skype non trova l'ingresso audio?

CSI:Il caso dei file audio WAV mancanti sulla scheda SD FAT32

Software multimediale Xine:riproduce file audio e video in Ubuntu Linux

Modifica dei file al volo in Linux (scrittura nel file di input su una pipe)