Онлайн конвертер видео на PHP с помощью FFmpeg

Создание простого конвертера видео на базе PHP + FFmpeg. Это позволит практически любые видеофайлы конвертировать в формат MP4 для простого воспроизведения в плеере VLC

Для настройки понадобиться установить FFmpeg и настроить базовую связку PHP + Apache. Шаги для настройки:
1. Установка Linux в качестве ОС. Я использую Ubuntu Server 19.04
Для управления сервером использую программу Putty

2. Настройка PHP 7.2 + Apache
Установим PHP:

sudo apt install php libapache2-mod-php php-mysql

По умолчанию в PHP есть ограничения по загрузке файлов, и времени исполнения кода, нужно это убрать:
sudo nano /etc/php/7.2/apache2/php.ini
Затем ищем строки и меняем их значения на то что ниже:
post_max_size = 4096M
upload_max_filesize = 4096M
max_file_uploads = 200
max_execution_time = 600


Установим Apache:
sudo apt install apache2
После этого нам необходимо перезапустить Apache для применения внесенных изменений.
sudo systemctl restart apache2


Проверить статус сервиса apache2:
sudo systemctl status apache2
Установим права на директорию:
sudo chown -R user:root /var/www/html

Включить обработку файла .htaccess:
sudo nano /etc/apache2/apache2.conf
Измените значение параметра AllowOverride:
AllowOverride All
Затем перезапустите apache:
sudo systemctl restart apache2

3. Установка FFmpeg
sudo apt-get update
sudo apt-get install ffmpeg

Все готово для настройки конвертера.
Для удобства пользования сервером использую программу WinSCP
Переходим в папку с сайтом:
/var/www/html
Затем создаем файл convert.php
Вот его содержимое:

<p>Конвертация практически любого видеофайла в формат <b>MP4</b>
 <!-- Тип кодирования данных, enctype, ДОЛЖЕН БЫТЬ указан ИМЕННО так -->
<form enctype="multipart/form-data" action="/convert_to_mp4.php" method="POST">
    <!-- Поле MAX_FILE_SIZE должно быть указано до поля загрузки файла -->
   
    <!-- Название элемента input определяет имя в массиве $_FILES -->
    <h2>Выберите файл для конвертирования:</h2> 
    <p><input name="userfile" type="file" />
    <input type="submit" value="Конвертировать" />
</form>

Затем создаем второй файл с именем convert_to_mp4.php
Вот его содержимое:

<?php
    $uploaddir = 'uploads/';
    $uploadfile = $uploaddir . basename($_FILES["userfile"]["name"]);  //оригинальный файл пользователя
/*Скрипт загрузки в папку*/
echo '<pre>';
    if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile )) 
	{
        echo "<h3>Сударь, блюдо подано! </h3>\n";
    }   
	else 
	{
        echo "Что то пошло не так.\n";
    }
/*Скрипт загрузки в папку*/
    $pathinfo2 = pathinfo($uploadfile, PATHINFO_EXTENSION ); // выводит расширение загруженного файла
    $u = md5(time()) .'.'. $pathinfo2; //новый файл что создается
    rename($uploadfile , $uploaddir. $u); //переименовать файл
    $path_parts = pathinfo($u, PATHINFO_FILENAME) ; //загруженный файл, но без расширения

    $w= $path_parts .'.mp4'; //готовый файл для скачивания с расширением mp4
    exec("ffmpeg -i ". $uploaddir . $u ." -c:v copy -c:a copy ". $uploaddir. $w);  //скрипт конвертирования в MP4		
	$link=$uploaddir.$w; 
	echo "<a href=$link><h1>Скачать файл</h1></a>"; //кнопка скачать
	exec("find /var/www/html/uploads/ -type f -mmin +1440 -delete"); //автоматическое удаление файлов старше 1440 мин. Срабатывает при обновлении страницы
?>

Далее необходимо создать файл с именем .htaccess в корневой директории сайта. Содержимое файла:

AddDefaultCharset UTF-8
Options -Indexes
ForceType application/octet-strea
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

Затем создать каталогuploads. В него будут помещены все загружаемые файлы. Установить права на него:
sudo chown admin:www-data -R /var/www/html

id_9

Back to Top
Ads Blocker Image Powered by Code Help Pro

Обнаружен блокировщик рекламы

Мы обнаружили, что вы используете расширения для блокировки рекламы. Пожалуйста, поддержите сайт, отключив блокировщик рекламы.

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker

Powered By
CHP Adblock Detector Plugin | Codehelppro