GNU/Linux >> Belajar Linux >  >> Linux

PHP-FFMpeg:Izinkan beberapa file input (Tambahkan audio ke video)

Tugas saya baru-baru ini adalah mengembangkan perangkat lunak pengeditan video online yang mirip dengan Biteable, Moovly, dll. Yah, saya tahu saya dapat  menggunakan PHP-FFmpeg perpustakaan yang memungkinkan saya untuk menulis skrip PHP dan yang dapat berinteraksi dengan ffmpeg diinstal pada sistem. Salah satu persyaratan dalam proyek ini adalah menambahkan trek audio ke video yang dipilih. ffmpeg alat baris perintah memungkinkan saya untuk memasukkan banyak file menggunakan -i argumen. Jadi saya cukup meneruskan file audio dan video sebagai argumen dan pekerjaan selesai. Namun, mencapai hal yang sama menggunakan pustaka PHP-FFMpeg merupakan tantangan. Dalam tutorial ini, saya akan menjelaskan cara mengizinkan beberapa file input di library PHP-FFMpeg.

Mari kita lihat perintah di bawah ini dimana -i argumen digunakan untuk meneruskan beberapa file input ke ffmpeg perintah.

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

Tetapi untuk mencapai hal yang sama dalam kode PHP-FFMpeg tidak langsung. Saya tidak dapat menemukan dokumentasi relevan yang menjelaskan prosedur untuk menambahkan beberapa file masukan (-i movie.mp4 -i audio.mp3) .

Cara mengizinkan beberapa file input di PHP-FFMpeg

Setelah pencarian ekstensif, saya menemukan solusi di StackOverflow. Solusinya adalah dengan menambahkan input kedua sebagai filter. Di bawah ini adalah perbaikan cepat kode:

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

Di bawah ini adalah kode lengkap untuk menambahkan trek audio ke video. Pastikan movie.mp4, audio.mp3 dan php-ffmpeg tersedia di jalur tempat file ini berada.

<?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. Bagaimana Cara Mengubah Ekstensi Banyak File?

  2. Izinkan Pengguna Lain Menyalin File Dari Folder?

  3. Bagaimana cara menambahkan beberapa file jar di classpath di linux

  1. Cara Menambahkan Banyak Host di phpMyAdmin

  2. Tambahkan Teks Overlay ke Video menggunakan PHP-FFMpeg

  3. Mengubah file dengan cepat di Linux (menulis ke file input di pipa)

  1. Cara Membuat Zip Banyak File di Linux

  2. Daftar File yang Diakses Oleh Program?

  3. 'Seandainya'?