Я работаю над простой системой загрузки и сжатия видео и в настоящее время использую следующий процесс.
Первый шаг
Я использую multipart/form-data
для загрузить исходный видеофайл, который я храню в /var/www/site/videos_pre/video.mp4
. Моя папка c - var/www/site/public_html/
. Я храню запись в своей базе данных с видеоинформацией.
Второй шаг
У меня есть процесс конвертации, который очень прост c, но выполняет свою работу ( по крайней мере, в CLI).
Он имеет следующий код:
public function converter($content_id)
{
$content = $this->videos_m->get($content_id);
$id = uniqid();
$name_mp4 = $content->name_slug.'_'.$id.'.mp4';
$name_webm = $content->name_slug.'_'.$id.'.webm';
$command_mp4 = 'ffmpeg -i ../videos_pre/'.$content->original_file.' -b:v 1500k -bufsize 1500k ./videos/'.$name_mp4;
system($command_mp4);
$command_webm = 'ffmpeg -i ./videos/'.$name_mp4.' -c:v vp9 -c:a libvorbis ./videos/'.$name_webm;
system($command_webm);
$update_video = new stdClass();
$update_video->archivo_mp4 = $name_mp4;
$update_video->archivo_webm = $name_webm;
$this->db->where('content_id', $content_id);
$this->db->update('Videos', $update_video);
}
Третий шаг - при возникновении проблемы
Я проверил это Windows 10 и Ubuntu 18.04. Код работает на Windows 10 в php и cli. Код в Ubuntu работает только с cli.
Полученные команды выглядят примерно так:
// First command to reduce the bitrate of the mp4
ffmpeg -i /var/www/site/videos_pre/video.mp4 -b:v 1500k -bufsize 1500k /var/www/site/public_html/videos/video_5e757d3e0d762.mp4
// Second command to convert the mp4 to a webm to get both types
ffmpeg -i /var/www/site/public_html/videos/video_5e757d3e0d762.mp4 -c:v vp9 -c:a libvorbis /var/www/site/public_html/videos/video_5e757d3e0d762.webm
Если я выполняю эти команды, они работают отлично. Если я запускаю скрипт php, будь то в браузере или через CLI, буквально ничего не происходит. Нет сообщений об ошибках ничего.
Я не уверен, что это проблема с правами, есть ли что-то, определенное c для php, чтобы запустить это, или какой-то модуль, который я не активировал. У меня достаточно времени выполнения, у меня оно составляет 600 секунд, но, как я уже сказал, оно даже не требует времени, оно просто ничего не делает.
Я даже могу повторить команды, и они появляются. Итак, в основном проблема в том, что мне нужно иметь возможность запускать эти команды с PHP. Я сделал это на Windows, но Ubuntu 18.04 не позволил мне. Обе ОС недавно установили ffmpeg , и я смог преобразовать их обе.
Я пытался изменить пути с абсолютного на относительный, никакой разницы нет.