GNU/Linux >> Znalost Linux >  >> Linux

PHP-FFMpeg:Povolit více vstupních souborů (přidat zvuk k videu)

Mým nedávným úkolem bylo vyvinout online software pro úpravu videa podobný Biteable, Moovly atd.. Věděl jsem, že bych mohl použít PHP-FFmpeg knihovna, která mi umožňuje psát PHP skript a která může komunikovat s ffmpeg nainstalovaný v systému. Jedním z požadavků v projektu bylo přidat k vybranému videu zvukovou stopu. ffmpeg nástroj příkazového řádku mi umožňuje vkládat více souborů pomocí -i argument. Takže mohu jednoduše předat audio i video soubory jako argument a práce je hotová. Dosáhnout toho samého pomocí knihovny PHP-FFMpeg však byla výzva. V tomto tutoriálu vysvětlím, jak povolit více vstupních souborů v knihovně PHP-FFMpeg.

Podívejme se na níže uvedený příkaz, kde -i argument se používá k předání více vstupních souborů do ffmpeg příkaz.

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

Ale dosáhnout stejného v kódu PHP-FFMpeg není přímočaré. Nemohl jsem najít žádnou relevantní dokumentaci, která by vysvětlovala postup přidání více vstupních souborů (-i movie.mp4 -i audio.mp3) .

Jak povolit více vstupních souborů v PHP-FFMpeg

Po rozsáhlém hledání jsem našel řešení na StackOverflow. Řešením je přidat druhý vstup jako filtr. Níže je rychlá oprava kódu:

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

Níže je uveden úplný kód přidání zvukové stopy k videu. Ujistěte se, že jsou v cestě, kde se tento soubor nachází, k dispozici movie.mp4, audio.mp3 a php-ffmpeg.

<?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. Přidejte překryvný text do videa pomocí PHP-FFMpeg

  2. Jak změnit příponu více souborů?

  3. Tail více vzdálených souborů

  1. Seznam souborů, ke kterým program přistupuje?

  2. „Kdyby“?

  3. Povolit ostatním uživatelům kopírovat soubory ze složky?

  1. Jak přidat více hostitelů v phpMyAdmin

  2. Dd:Více vstupních souborů?

  3. Potrubí k více souborům ve skořápce?