¿Como generar un vídeo desde un audio e imágenes con PHP? [cerrada]

Me gustaría saber como generar un vídeo a partir de imágenes y audio subido desde php.

<?php
  $exito = 0;
  if ($_SERVER['REQUEST_METHOD'] == 'POST'){
    foreach ($_FILES['imgToUpload']['name'] as $i => $name) {
      if (strlen($_FILES['imgToUpload']['name'][$i]) > 1) {
        if (move_uploaded_file($_FILES['imgToUpload']['tmp_name'][$i], 'upload/'.$name)) {
          $exito=1;
        }
      }
    }
    if (strlen($_FILES['audioupload']['name']) > 1) {
      if (move_uploaded_file($_FILES['audioupload']['tmp_name'], 'upload/audioPrincipal.mp3')) {
        $exito=2;
      }
    }


    if (strlen($_FILES['audio2upload']['name']) > 1) {
      move_uploaded_file($_FILES['audio2upload']['tmp_name'], 'upload/audioSecundario.mp3');
    }


  }
  if ($exito >= 2) {
    echo "<p style='color: green'>Subida con &eacute;xito</p>";
  }


 ?>

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
      <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" enctype="multipart/form-data">
        Imagenes: <input name="imgToUpload[]" id="imgToUpload" type="file" multiple="" /><br>
        Audio: <input type="file" name="audioupload" value="audioupload" id="audioupload"><br>
        Audio secundario(opcional): <input type="file" name="audio2upload" value="audio2upload" id="audio2upload"><br>
        <!-- Audio secundario reducirle el volumen sobre el otro audio -->
        <input type="submit" value="Generar">
      </form>
  </body>
</html>
4
задан 23.12.2016, 18:32
1 ответ

Используй ffmpeg.

Хотя возможно делать это другими формами, ffmpeg это инструмент факта (кроме того, что является бесплатная), чтобы обрабатывать видео и аудио. Поскольку у него есть лицензия GNU, есть какие-то ограничения как распространять, но в веб сайте (который остается в способе SaaS, видеть это) верно законный использовать это.

То, что ты должен делать:

1 - Пересылать изображения и audios в какое-то хорошо известное расположение внутри server.

2 - Создавать текстовый файл с форматом concat ffmpeg. Пример:

file '/ruta/a/animales.png'
duration 5
file '/ruta/a/palomas.png'
duration 1
file '/ruta/a/perros.png'
duration 3
file '/ruta/a/gatos.png'
duration 2

Имей в виду, что duration эта в секунды, относится в file немедленный предыдущий и ты можешь использовать десятичную стоимость (ej: 0.5, который был бы вторым способом)

Здесь - документация формата concat

3 - Бросать процесс (ты можешь использовать shell_exec), чтобы делать видео:

ffmpeg -f concat -i comandos.txt -pix_fmt yuv420p video.mp4

Где comandos.txt файла, созданного в точке 2, и video.mp4 это вытекающее видео.

Заметь: я это использовал с изображениями того же размера, из которых он выходит размеры видео (imganes 1920 x 1080 производят видео full HD). Если ты нуждаешься в том, чтобы пере-взобраться на видео видеть здесь.

4 - Добавлять отпечаток аудио к видео (которое ты можешь создавать сходной формы, используя один mp3 вывода)

ffmpeg -i video.mp4 -i audio.mp3 output.mp4

Где video.mp4 файла, созданного в точке 3, audio.mp3 это аудио, которое нужно добавлять и output.mp4 это конечный результат.

Больше информации

Я оставляю этих тебе снабди ссылками, что они для меня путеводитель работы с ffmpeg.

5
ответ дан 24.11.2019, 11:53
  • 1
    Я попытаюсь, большое спасибо из-за помощи ^^. – Hamwen 23.12.2016, 17:00
  • 2
    @rnd превосходный ответ. – Juan Pinzón 23.12.2016, 17:37
  • 3
    В шаге 2 duració n он должен складывать 10? поскольку я устанавливаю resolució n видео? Спасибо за помощь :) – Hamwen 23.12.2016, 18:04
  • 4
    @Hamwen fijta в моем редактировании. – rnrneverdies 23.12.2016, 18:20