Сжать видео с помощью ffmpeg при загрузке с помощью формы php?

Я использую Laravel Famework и использую PHP-библиотеку ffmpeg. Если вы не нашли хороших ссылок для сжатия видео с помощью ffmpeg. Есть два случая компрессии.

1) Video Already exists in folder - this i have done already 
2) Video Upload through Form - this i am not able to do :(

Позвольте мне поделиться кодом 1-го случая: -

Suppose my video is 13Mb and below code compressed to 4.5Mb (running fine)
$inputVideo = public_path('input/airplane_flight_airport_panorama_1080.mp4');
$outputVideo = public_path('uploads/output.mp4');
exec("ffmpeg -i $inputVideo -b 1000000 $outputVideo"); // this compressing or resize the video

Теперь второй случай загружается с использованием формы: -

<form method="post" action="{{url('/api/upload-test-video')}}" enctype="multipart/form-data">
 <input name="video" type="file"><br>
 <input type="submit" value="Submit">
</form>

Теперь, когда я иду к функции: -

public function uploadTestVideo(Request $request){
    echo "<pre>"; print_r($_FILES); 
    // now in this function i wnat to compress the video 
}

Примечание. Я не хочу загружать видео в какую-либо папку, а затем получать видео и сжимать видео. Пожалуйста, помогите, как я могу решить эту проблему. Заранее спасибо :)


person kunal    schedule 07.03.2018    source источник


Ответы (1)


Что делаете вы хотите сделать? Сжимать видео на стороне пользователей? Или во время загрузки? Вам нужно видео в файловой системе, чтобы «сжать» его с помощью ffmpeg. Обойти это невозможно, так как ffmpeg требуется физический доступ к видеофайлу на машине, на которой он работает.

поэтому лучше всего загрузить видео, поместить его во временную папку и сжать. Лично я бы сделал шаг ffmpeg асинхронно, так как это займет некоторое время, но это совсем другая история.

person heiglandreas    schedule 07.03.2018
comment
Вы имеете в виду, что сначала я загружу видео в какую-то временную папку, а затем сожму, а после сжатия удалю файл из временной папки? - person kunal; 07.03.2018
comment
Это была общая идея. - person heiglandreas; 07.03.2018
comment
а что со временем... для реализации этого процесса потребуется больше времени :( - person kunal; 07.03.2018
comment
Перекодирование видео требует времени. Для этого нет короткого пути. И поскольку это может занять много времени, я предложил сделать это асинхронно. Пользователь загружает видео и затем получает подтверждение Спасибо, мы получили видео! Готовим сейчас. Пожалуйста, проверьте еще раз... И когда кодирование будет завершено, пользователь получит сообщение Мы закончили. Вот результат. - person heiglandreas; 07.03.2018