Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php通过连接和标题(';内容类型:audio/mpeg';)合并mp3音频是否正确?_Php_Merge_Mp3_Captcha - Fatal编程技术网

使用php通过连接和标题(';内容类型:audio/mpeg';)合并mp3音频是否正确?

使用php通过连接和标题(';内容类型:audio/mpeg';)合并mp3音频是否正确?,php,merge,mp3,captcha,Php,Merge,Mp3,Captcha,我已经建立了一个简单的验证码PHP脚本,现在我正在尝试创建一个脚本,为看不清楚或根本看不见的人生成mp3音频。我的目标只是挑战自己,所以我不喜欢使用外部库,但我希望能得到一些帮助。我尝试使用file_put_contents()函数来合并音频(每个字母有一个mp3音频),让我惊讶的是,它成功了,但对我来说,像加入文本文件一样加入音频文件似乎是不正确的。 因此,我的第二次尝试是这样做: <?php session_start(); $letter_array = str_sp

我已经建立了一个简单的验证码PHP脚本,现在我正在尝试创建一个脚本,为看不清楚或根本看不见的人生成mp3音频。我的目标只是挑战自己,所以我不喜欢使用外部库,但我希望能得到一些帮助。我尝试使用file_put_contents()函数来合并音频(每个字母有一个mp3音频),让我惊讶的是,它成功了,但对我来说,像加入文本文件一样加入音频文件似乎是不正确的。 因此,我的第二次尝试是这样做:

<?php
    session_start();
    $letter_array = str_split($_SESSION["captcha"]); //this is an array with the letters of the captcha
    header('Content-Type: audio/mpeg');
    header('Cache-Control: no-cache');
    header('Pragma: no-cache');
    header('Expires: 0');
    $audio = '';
    foreach ($letter_array as $letter) {
        $audio .= file_get_contents("audios/".$letter.".mp3");
    }
    echo $audio;
?>

然后我可以将这个文件嵌入到HTML中的标记中,它也可以工作。我知道这两种解决方案本质上是相似的,但我发现第二种方法更简洁。我的问题是:虽然它工作得很好,但这样做可以吗,或者是错误的,或者是不推荐的?我不太了解mp3文件的编码和结构,所以我不知道这个解决方案是否适用于所有人。我也愿意听取建议
非常感谢,是的

常规MP3文件只是一系列MPEG帧。只要它们具有相同的采样率和通道计数,就可以安全地连接它们。您可以混合和匹配比特率

不过也有一些警告。首先,MP3文件通常带有ID3标签。你会想扔掉那些标签,因为它们应该在特定的位置

此外,了解钻头储层也很重要。这对您来说不是问题,因为您连接的是完全编码的文件,但如果您必须拆分流,请务必注意,来自一个的数据可以放置到其他帧中。这是为了在更复杂的帧上使用更多的带宽,而在不需要的地方使用更少的带宽


然而,在一天结束时,你真的不应该建立自己的验证码。对于某人来说,编写5行代码来匹配您的音频样本并选择数字是很简单的。更不用说,您可能会造成可访问性问题。我强烈建议你去谷歌搜索一下。当前版本对您的用户来说是非侵入性的,并且可能比您建议的更安全

不,那不是MP3的工作原理。您要么需要调用一个可以将音频正确组合成单个文件的实用程序,要么开发一个客户端解决方案来按顺序播放每个文件。@Sammitch这就是MP3的工作原理。