@aprinz

Как работать с FFMPEG без ссылок на файлы?

Здравствуйте, необходимо сделать скрипт конвертации видео в аудио на php. Файл передается в php скрипт через ajax. Скрипт должен конвертировать видео в аудио и вернуть ajax-у файл.

У меня есть простой код (все работает, видео конвертируется)
require_once '/public_html/vendor/autoload.php'; 
$ffmpeg = FFMpeg\FFMpeg::create();
$mp3Format = new FFMpeg\Format\Audio\Mp3(); 
$videoFolderPath='/public_html';


$audioObj = $ffmpeg->open($videoFolderPath.'/video.mp4');    
$audioObj->save($mp3Format, $videoFolderPath.'/myfile.mp3');


Но я не могу понять как в $ffmpeg->open вставить файл который мне передал ajax? Чтобы не загружать его на хостинг, а обрабатывать прямо в скрипте, а потом обратно возвращать файл ajax-у тоже без ссылок а просто данными?
  • Вопрос задан
  • 204 просмотра
Решения вопроса 1
kawabanga
@kawabanga
Если условие что в 2 секунды любое аудио декодируется и вам нужно лишь правильно отправлять все через ajax, то formdata js в помощь

~JS
var formData = new FormData();
formData.append('file', fileInput.files[0]);

$.ajax({
  url: 'upload.php',
  method: 'POST',
  data: formData,
  contentType: false,
  processData: false,
  success: function(response) {
    console.log('File uploaded successfully');
  },
  error: function(jqXHR, textStatus, errorMessage) {
    console.log('File upload failed: ' + errorMessage);
  }
});


~PHP
require_once '/public_html/vendor/autoload.php'; 
$ffmpeg = FFMpeg\FFMpeg::create();
$mp3Format = new FFMpeg\Format\Audio\Mp3(); 
$videoFolderPath='/public_html';

if(!isset($_FILES['file'])) {
  return 'no file';
}

$tempName = $_FILES['file']['tmp_name'];


$audioObj = $ffmpeg->open($tempName);    
$audioObj->save($mp3Format, $videoFolderPath.'/myfile.mp3');
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы