【问题标题】:convert mp4 files one by one into mp3 on click of a button in php单击php中的按钮将mp4文件一一转换为mp3
【发布时间】:2019-06-04 21:02:31
【问题描述】:

我正在编写如下所示的 php 代码,在该代码中,我使用系统命令 ffmpeg 单击任何 Go 按钮将 mp4 文件转换为 mp3 从表格行中,如下图所示。

<?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代码显示如下内容:

问题陈述:

我想知道我应该在上面的 php 代码中进行哪些更改,以便 Go 按钮 (Line#B) 以同一行中存在的 mp4 文件为目标。

此时,单击任何表格行中的“Go”按钮,开始将所有 mp4 文件转换为 mp3。

假设 $mp4_files 有两个文件:

  1. 36031P.mp4
  2. hello.mp4

-> 第一行 Go 按钮应针对第一个文件 (36031P.mp4)。
-> 第二行 Go 按钮应该针对第二个文件(hello.mp4)。

这是我尝试过的,但添加 break 仅针对 $mp4_files 中的第一个文件,但也单击任何 Go 按钮。

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

【问题讨论】:

  • 不,它不是重复的。在这里,我想通过单击一个按钮将 mp4 文件一个一个地转换为 mp3。虽然,它具有相同的代码,但需要进行修改。你读过这个问题吗?
  • 是的,我已经阅读了这个问题,它与您之前发布的内容基本相同。
  • @PatrickQ 不,这不是一回事。这里第一行 Go 按钮应该针对第一个文件(36031P.mp4),第二行 Go 按钮应该针对第二个文件(hello.mp4),反之亦然。
  • @PatrickQ 我想知道你能否给我一些指导如何继续这个问题。

标签: php forms button foreach


【解决方案1】:

使用 Ajax 请求执行此操作

在 html 文件的底部创建 javascript 函数 convert_video

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 .
 }

【讨论】:

  • 有了这个方案,你就可以一一转换mp3
猜你喜欢
  • 2019-10-19
  • 2019-10-25
  • 2012-04-20
  • 1970-01-01
  • 2013-09-24
  • 2014-11-04
  • 1970-01-01
  • 2012-09-22
  • 1970-01-01
相关资源
最近更新 更多