在php中的目录中查找特定的文件类型,并在转换后将其发送到不同的目录

2024-01-08

我有一个目录,其中有一个mp4 file(也包括其他文件)我想转换成mp3然后将其发送到不同的目录。我用过以下命令行命令转换成mp3,它工作得很好。

ffmpeg -i 36031P.mp4 -map 0:2 -ac 1 floor_english.mp3 

mp4 file在里面文件夹内。使用 ffmpeg,我想将 mp4 文件转换为 mp3并将其发送至外文件夹.

<?php
$dir    = 'in_folder';
$files1 = scandir($dir);
print_r($files1);    /* It lists all the files in a directory including mp4 file*/
?>

print_r($files1)列出目录中的所有文件,包括 mp4file。

问题陈述:

我想知道我需要编写什么 php 代码,以便它只查找目录下的mp4文件并将其发送至不同的目录(比如说 out_folder)转成mp3后。

The 图画表现我想要的:


认为这就是你想要的:

<?php
$dir    = 'in_folder';
$files1 = scandir($dir);
print_r($files1);    /* It lists all the files in a directory including mp4 file*/

$destination = 'your new destination';

foreach($files1 as $f)
{
  $parts = pathinfo($f);
  if ($parts['extension'] = 'mp3';
  {
    // copy($f, $destination. DS . $parts['filename']. '.' . $parts['extension']);
    rename($f, $destination. DS . $parts['filename']. '.mp3');
  }
}
?>

文档pathinfo https://www.php.net/manual/fr/function.pathinfo.php

编辑并转换:

我想你可以像这样直接导出你的mp3

foreach($files1 as $f)
{
  $parts = pathinfo($f);
  if ($parts['extension'] = 'mp4';
  {
    // $result : the last line of the command output on success, and FALSE on failure. Optional.
    system('ffmpeg -i '.$f.' -map 0:2 -ac 1 '.$destination.DS. $parts['filename'].'.mp3', $result);
  }

  // See: https://www.php.net/manual/en/function.system.php
  if ($result === false) {
    // Do something if failed
    // log for example
  } else {
    // command completed with code : $result
    // 0 by convention for exit with success EXIT_SUCCESS
    // 1 by convention for exit with error EXIT_ERROR
    // https://stackoverflow.com/questions/12199216/how-to-tell-if-ffmpeg-errored-or-not
  }
}

文档system https://www.php.net/manual/fr/function.system.php

或者执行第一个循环来转换 mp4,然后执行第二个循环来复制 mp3

全部编辑:

foreach($files1 as $f)
{
  $parts = pathinfo($f);

  switch(strtolower($parts['extension']))
  {
    case 'mp4' :
      // $result : the last line of the command output on success, and FALSE on failure. Optional.
      system('ffmpeg -i '.$f.' -map 0:2 -ac 1 '.$destination.DS. $parts['filename'].'.mp3', $result);

      // See: https://www.php.net/manual/en/function.system.php
      if ($result === false) {
        // Do something if failed
        // log for example
      } else {
        // command completed with code : $result
        // 0 by convention for exit with success EXIT_SUCCESS
        // 1 by convention for exit with error EXIT_ERROR
        // https://stackoverflow.com/questions/12199216/how-to-tell-if-ffmpeg-errored-or-not
      }
      break;

    case 'mp3' :
      // copy($f, $destination. DS . $parts['filename']. '.' . $parts['extension']);
      rename($f, $destination.DS.$parts['filename'].'.mp3');
      break;  
  }
}

Edit 1: 更正strtolower($parts['extension'])检查文件的扩展名不区分大小写。

或者像这样:

strtolower(pathinfo("/path/file.mP4", PATHINFO_EXTENSION)) == ".mp4"

没有必要使用preg_match and regexp因为pathinfo是一个预制函数来完成这项工作,除非您使用双命名扩展,否则它可以正常工作.tar.gz例如。

正则表达式检测文件扩展名 https://stackoverflow.com/questions/5656475/regular-expression-to-detect-a-file-extension

Edit 2 : Use rename代替copy移动 mp3。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在php中的目录中查找特定的文件类型,并在转换后将其发送到不同的目录 的相关文章

  • 如何在 PHP 中从字符串类名实例化? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 如何创建返回方法名称的新实例 不幸的是我收到这个错误 错误 类名必须是有效的对象或字符串 这是我的代码 class Foo public f
  • 将 OAuth WRAP 访问令牌直接保存在客户端计算机上的 cookie 中吗?

    我计划建立一个可以访问 oauth 包装框架的网站 我正在考虑将访问令牌按原样存储在客户端计算机上 我不想在服务器上维护临时令牌等数据库 我应该做吗 或者我应该加密它 首先 为什么他们不使用 OAuth 2 0 您可以将 OAuth 凭据存
  • PHP:将多字节字符串(单词)拆分为单独的字符

    尝试使用 mb split 将这个字符串 主楼怎么走 分割成单独的字符 我需要一个数组 但没有成功 有什么建议吗 谢谢你 例如 尝试使用带有 u 选项的正则表达式 chars preg split u string 1 PREG SPLIT
  • 使用 phpdocx 下载损坏的 .docx

    我有一个项目 我们使用 phpdocx pro 在模板中生成 docx 文件 我可以很容易地将数据输入到模板中 但是当下载文件并在 MS Word 2010 中打开时 程序报告无法打开文件 因为内容存在问题 详细信息是 文件已损坏 并且无法
  • 这个巨大的正则表达式是如何工作的?

    我最近在我的一个目录中的一个名为的文件中找到了下面的代码doc php 文件功能或链接到文件管理器 做得非常好 基本上 它列出了当前目录中的所有文件 并且允许您更改目录 它可以访问我的所有文件 添加 重命名 信息 删除 我不记得安装过它 我
  • 自定义帖子类型的 WordPress 自定义字段

    过去有几个人出现过这个问题 但他们的问题的解决方案对我来说不起作用 我已经尝试了很多 在 WordPress 中 我创建了 3 种自定义帖子类型 1 代表 视频 新闻 和 音乐 每个内容都发布到自己的页面 我想添加自定义字段 这样我就可以为
  • PHP - 警告:strpos() [function.strpos]: 空分隔符是什么意思?

    警告 strpos function strpos 空分隔符是什么意思 我有这个 if strpos 039 text false text str replace 039 text 猜测一下 我会说 text是一个空字符串 感谢马克指出细
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • php如何生成动态list()?

    根据我的理解 这就是 list 的工作原理 list A1 A2 A3 array B1 B2 B3 所以在帮助下list 我们可以相应地从数组中分配值 这是我的问题 如何生成动态list 1 基于数据库返回结果 我不确定有多少 但我将其全
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • 使用 file_get_content 发布数据

    我已经做了一些关于如何使用的研究file get content与帖子 我也读过this one https stackoverflow com questions 2445276 how to post data in php using
  • 使用 PHP 中的 GD 库在图像上绘图

    我创建了一个代码来生成随机图案图像 它创建一个具有给定宽度和高度的图像 并用 40x40 像素的小矩形填充它 这是我的代码
  • 如何将图像从 Android 应用程序上传到网络服务器的特定文件夹中

    如何将图像从 android 移动到 Web 服务器上的指定文件夹 这是我的安卓代码 package com example bitmaptest import java io ByteArrayOutputStream import ja

随机推荐

  • 来自csv文件python的字典

    我已经阅读了一个 cvs 文件 我想根据该文件上的信息创建一个字典 我尝试使用 csv DictReader 类来实现该建议 但它没有给我想要的结果 现在我正在读取这样的文件 size reader csv reader f dialect
  • 在 ASP.NET 中处理长时间运行的进程的常见方法

    我们有一个长时间运行的数据传输过程 它只是一个被调用和运行的 asp net 页面 最多可能需要几个小时才能完成 它似乎工作得很好 但我只是想知道有哪些更流行的方法来处理这样的漫长过程 您是否创建应用程序并通过 Windows 调度程序 W
  • 在自定义位置设置 .git 文件夹

    这是我当前的目录结构 mygit code git morecode mycode The code文件夹由git监控 git的文件在通常的情况下代码 git 我只处理这段代码的一部分 即mycode 我想使用 git 来管理我的代码 但我
  • Django 小部件覆盖模板

    我是 django 的新人 我想创建一个自定义小部件 形式 py from project widgets import MultiChoiceFilterWidget class CustomSearchForm FacetedSearc
  • 如何在 Django 模板标签内将字符串连接到数字

    我找到了一个StackOverflow 上有类似问题 https stackoverflow com questions 4386168 how to concatenate strings in django templates 但该解决
  • PHP7 中 foreach 的变化

    foreach在 PHP7 中 默认情况下 当按值迭代时 根据以下方式对数组的副本进行操作 http php net manual en migration70 inknown php http php net manual en migr
  • Django python-rq -- DatabaseError SSL错误:解密失败或坏记录mac

    我正在使用 django redis 和 django rq 框架来支持 Heroku 上的 Django 应用程序的 redis 缓存和 redis 后台任务处理 过去工作顺利 但现在我不断收到DatabaseError SSL erro
  • 添加 #pragma make_public(Type) 未消除 C3767 错误

    我有一个 Assembly A 它定义了一个托管类 该类具有一个采用两种本机类型的公共构造函数 我可以访问包含本机类型的头文件和编译的 lib 文件 我创建了一个C CLI项目并定义了ref class其中包含一个public static
  • ASPNetCore MVC 路由让服务器处理特定路由

    这是之前未解决的问题的分叉question https stackoverflow com questions 44732729 asp net application interfering with remote host lets e
  • 跟踪 1 参数矩阵族的特征向量

    我的问题是这样的 我正在尝试通过 截断的 Karhunen Loeve 变换对随机过程进行谱分解 但我的协方差矩阵实际上是一个单参数矩阵族 我需要一种方法来估计 可视化如何我的随机过程取决于这个参数 为此 我需要一种方法来跟踪 numpy
  • .NET 中“调试”和“发布”构建之间的主要区别是什么? [复制]

    这个问题在这里已经有答案了 重复 NET 中的调试与发布 https stackoverflow com questions 90871 debug vs release in net 为什么 NET 应用程序的构建有 调试 和 发布 模式
  • 如何检测手机后退按钮是否被按下

    Please how can I detect if the back button is been pressed in a mobile phone as shown in the image below 我尝试使用在桌面上完成的正常方
  • 使用 Python 的 P2P RDP

    我想用 Python 编写一个简单的 P2P RDP 客户端和服务器 这就是我绘制草图的方式 短时间截屏 压缩它们并发送到服务器应用程序 从服务器应用程序获取键盘 鼠标事件 将它们序列化并发送给客户端 客户端将反序列化它们并使用 SendI
  • Android - Java 使用带有 DefaultHapiContext 的 HAPI v 2.2 解析 HL7 消息

    我在尝试解析 HL7 消息时收到此错误 我不知道为什么以及如何解决它 我正在使用 hapi v2 2 所以请帮助我 提前致谢 这是目录 08 28 15 03 28 552 E dalvikvm 642 Could not find cla
  • vue cli 项目中的 Favicon 未更改

  • 如果调用 http.Get(url) 时发生错误,我们是否需要关闭响应对象?

    在以下代码中 是否还需要在错误情况下关闭响应正文 res err http Get url if err nil log Printf Error s n err defer res Body Close 一般概念是 当一个函数 或方法 有
  • 无法实例化服务:ClassNotFoundException

    我读过大约一百个同一类别的问题 但没有一个有帮助 我有一个工作应用程序 然后重构了包名称 然后编译并运行 一周后 我回来处理它 并在启动时收到 ClassNotFoundException 更糟糕的是 如果我从存储库中签出之前的提交 在任何
  • Ember.js 中的“动态段”?

    在整个 Ember js 文档中 人们发现了这样一个概念 动态段提及在几个地方 https www google de search q site 3Aemberjs com 22dynamic segment 22 这是什么意思 使用适当
  • Swift 3 声音播放

    好吧 我已经研究过这个问题 并尝试了许多不同的方法来在单击按钮时播放声音 在 swift 3 中单击按钮时如何播放声音 我的声音位于名为 Sounds 的文件夹中 名称为 ClickSound mp3 该功能下的用户 MARK PLAY S
  • 在php中的目录中查找特定的文件类型,并在转换后将其发送到不同的目录

    我有一个目录 其中有一个mp4 file 也包括其他文件 我想转换成mp3然后将其发送到不同的目录 我用过以下命令行命令转换成mp3 它工作得很好 ffmpeg i 36031P mp4 map 0 2 ac 1 floor english