GNU/Linux >> Linux の 問題 >  >> Linux

PHP-FFMpeg:複数の入力ファイルを許可する(ビデオにオーディオを追加する)

私の最近の任務は、Biteable、Moovlyなどに似たオンラインビデオ編集ソフトウェアを開発することでした。まあ、私はPHP-FFmpegを使用できることを知っていました。 PHPスクリプトを記述でき、ffmpegと対話できるライブラリ システムにインストールされています。プロジェクトの要件の1つは、選択したビデオにオーディオトラックを追加することでした。 ffmpeg コマンドラインツールを使用すると、-iを使用して複数のファイルを入力できます 口論。したがって、オーディオファイルとビデオファイルの両方を引数として渡すだけで、作業は完了です。ただし、PHP-FFMpegライブラリを使用して同じことを達成することは困難でした。このチュートリアルでは、PHP-FFMpegライブラリで複数の入力ファイルを許可する方法について説明します。

-iである以下のコマンドを見てみましょう。 引数は、複数の入力ファイルをffmpegに渡すために使用されます コマンド。

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

しかし、PHPで同じことを達成する-FFMpegコードは簡単ではありません。複数の入力ファイルを追加する手順を説明する関連ドキュメントが見つかりませんでした(-i movie.mp4 -i audio.mp3)

PHP-FFMpegで複数の入力ファイルを許可する方法

徹底的に検索した後、StackOverflowで解決策を見つけました。解決策は、2番目の入力をフィルターとして追加することです。以下はコードのクイックフィックスです:

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

以下は、ビデオにオーディオトラックを追加するための完全なコードです。 movie.mp4、audio.mp3、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. PHP-FFMpegを使用してビデオにオーバーレイテキストを追加する

  2. 複数のファイルの拡張子を変更するにはどうすればよいですか?

  3. プログラムによってアクセスされるファイルを一覧表示しますか?

  1. 「ifs」?

  2. オーディオ入力を常にWebカメラマイクにする方法は?

  3. Linux のクラスパスに複数の jar ファイルを追加する方法

  1. phpMyAdminで複数のホストを追加する方法

  2. Linuxで複数のファイルを圧縮する方法

  3. 複数のリモート ファイルを追跡する