温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php实现音频格式转换的方法

发布时间:2020-08-21 10:46:36 来源:亿速云 阅读:471 作者:小新 栏目:编程语言

php实现音频格式转换的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!

php音频格式转换的实现方法:首先把ffmpeg放在phpStudy的WWW目录下;然后把ffmpeg下的bin目录添加到windows的环境变量中;最后通过ffmpeg转换音频格式即可。

php实现音频格式转换的方法

windows+php+ffmpeg转换音频格式

近几天在做一个语音识别搜索功能的时候遇到了一个问题 ,发个文章记录一下,萌新第一次发博客,有不对的地方请各位大佬们多多指正!
前端用的微信的sdk生成的录音,然后用阿里的一句话识别转成文字,这里遇到的坑就是阿里不支持微信返回的音频格式,所以这里需要处理一下格式,经过了一顿百度,决定使用ffmpeg进行音频的转换
首先要下载ffmpg工具 [下载地址](http://ffmpeg.org/)
我为了方便调试我把ffmpeg放在phpStudy的WWW目录下了 如图:

php实现音频格式转换的方法

其中ffmpeg.php是我自己写的,代码贴在下面
之后把ffmpeg下的bin 目录添加到windows的环境变量,具体操作这里就不说了,学过java的都清楚,如记不清了可百度一下
话不多说,直接上代码.
<?php
/**
 * @api音频文件格式转换-将silk转为wav
 * @author wyp
 */
header("content-type:text/html;charset=utf-8");
date_default_timezone_set('Asia/Shanghai');
define('BASE_PATH', str_replace('\\', '/', realpath(dirname(__FILE__) . '/')) . "/");
//域名
$domain = $_SERVER['SERVER_NAME'];

/**
 * 由于每次访问时会将音频文件上传到服务器上,所以我这里先把之前上传到服务器的音频删除
 */
$dir = scandir('./');
foreach ($dir as $key => $value) {
    if (substr($value, -4) == '.wav') {
        if ($value == $_GET['filepath']) {
            continue;
        }
        $filemtime = fileatime($value);
        if (time() - $filemtime > 10) {
            unlink($value);
        }

    }
}

//接收文件
if (!isset($_GET['filepath'])) {
    echo json_encode([
        'code' => 400,
        'info' => '文件路径为空',
    ]);
    exit;
}
$filepath = $_GET['filepath'];
$in_time = date('Y-m-d-h-i-s', time());
@$copy = copy($filepath, './in_' . $in_time . ".silk");//这里将文件下载到本地服务器
if (!$copy) {
    echo json_encode([
        'code' => 400,
        'info' => '请检查文件路径',
    ]);
    exit;
}
$filepath = "in_" . $in_time . ".silk";
//输出文件名
$rank = "rec";
for ($i = 1; $i < 9; $i++) {
    $rank .= rand(0, 9);
}
$outfile = $rank . "-" . date('Y-m-d-h-i-s', time()) . ".wav";
//绝对地址(D://phpstudy/www/...)
$base = BASE_PATH;

//要执行的cmd命令
$cmd = "ffmpeg -i $base" . "$filepath " . "$base$outfile";

//执行cmd命令
exec($cmd);

//删除接收到的文件
unlink('./in_' . $in_time . ".silk");
//返回结果
echo json_encode([
    'code' => 200,
    'cmd' => $cmd,//执行的cmd
    'outfile' => "$domain/ffmpeg/bin/$outfile"//文件路径
]);
?>

感谢各位的阅读!看完上述内容,你们对php实现音频格式转换的方法大概了解了吗?希望文章内容对大家有所帮助。如果想了解更多相关文章内容,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI