конвертировать mp4 файлы по одному в mp3 одним нажатием кнопки в php - PullRequest
0 голосов
/ 05 июня 2019

Я работаю над php-кодом, как показано ниже, в котором я конвертирую mp4-файлы в mp3, используя системную команду ffmpeg при нажатии любой кнопки «Перейти» из строки таблицы, как показано ниже на рисунке.

<?php
    if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['go-button']))
    {       
     foreach ($mp4_files as $f)
     { 
         $parts = pathinfo($f);
         switch ($parts['extension'])
         {
             case 'mp4' :
                 $filePath = $src_dir . DS . $f;
                 system('ffmpeg -i ' . $filePath . ' -map 0:2 -ac 1 ' . $destination_dir . DS . $parts['filename'] . '.mp3', $result);
         }
     }
    }
 ?>

<table>
       <tr>
          <th>MP4 Name</th>
          <th>Action/Status</th>
       </tr>
     <?php 
      $file = $mp4_files[$key];    
      ?>
       <tr>
          <td><?php echo basename($file); ?></td>
          <td><button style="width:90px;" type="submit" name="go-button" value="Go" class="btn btn-outline-primary">Go</button</td> <!-- Line#B -->  
       </tr>
</table>

Приведенный выше код html / php отображает следующее содержимое:

enter image description here

Описание проблемы:

Мне интересно, какие изменения я должен внести в приведенный выше код php, чтобы кнопка Go (строка # B) предназначалась для файла mp4, присутствующего в той же строке.

В этот момент при нажатии кнопки «Перейти» из любой строки таблицы начинается конвертация всех файлов mp4 в mp3.

Допустим, у $ mp4_files есть два файла:

  1. 36031P.mp4
  2. hello.mp4

-> Кнопка перехода в 1-ю строку должна указывать на 1-й файл ( 36031P.mp4 ).
-> Кнопка Go во 2-й строке должна предназначаться для 2-го файла ( hello.mp4 ).

Это то, что я пробовал, но добавление разрыва предназначается только для 1-го файла в $ mp4_files, ноэто тоже нажатие любой кнопки Go.

foreach ($mp4_files as $f)
{ 
  // my stuff
  break;
}

1 Ответ

0 голосов
/ 06 июня 2019

Сделайте это, используя Ajax-запрос.

создайте функцию javascript convert_video внизу вашего html-файла

function convert_video(video_id){

    $.ajax({
        url: 'server.com/converttomp3.php',
        type: 'POST',
        data: {video_id:video_id},
        beforeSend: function(){
            //
        },
        success: function(data)
        {

            var crude = JSON.parse(data);

            if(crude.status){
                alert('Success message');
                window.location.href = window.location.href;
            } else {

                alert(crude.message);
            }


        },
        error: function (jqXHR, textStatus, errorThrown)
        {
            //Error

        }

Затем из HTML-кода в качестве зацикленного видео

<td><button type="submit" onclick="return convert_video('<?php echo $file;')" name="go-button" value="Go">Go</button</td>

наконец в вашем серверном коде

if($_SERVER['REQUEST_METHOD'] == "POST")
{    
  $video_id = $_POST['video'];
  // processs your video here .
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...