php 检查 wav 文件格式?
php check wav file format?
我正在使用以下代码检查 php 中的 wav 文件。
$fp=$d=$data=$format=$bit=$chn="0";
$fp = fopen('ppk.wav', 'r'); fseek($fp, 20); $d = fread($fp, 18);
$data = unpack('vfmt/vch/Vsr/Vdr/vbs/vbis/vext', $d);
$format = array(0x0001 => 'PCM',0x0003 => 'IEEE Float',0x0006 => 'A-LAW',0x0007 => 'MuLAW',0xFFFE => 'Extensible',);
$bit = rtrim($data['sr'],"0") * rtrim($data['dr'],"0");
$chn = ($data['ch'] = 1) ? "Mono" : "Stereo";
fclose($fp);
echo "{$format[$data['fmt']]} {$data['sr']}Hz {$bit}bit {$chn}";
if ($format[$data['fmt']]!="A-LAW" || $data['ch']>1 || $data['dr']>8000 || $bit>64) {
echo "wrong format";
}
这很好用,并显示文件格式是否错误。
我现在想检查另一个 wav 文件..
因此 wav 文件可以是 A-LAW 单声道 8khz 64 位或 PCM 单声道 16khz 512 位。
但我不确定如何编写 if 语句来检查两者?
例如:
if ( Alaw mon 8khz <64bit || pcm mono 16khz <512)
有什么想法吗?谢谢
您可以将描述格式有效性的条件组合在一起并使用 !
来否定它 - 如果没有一组条件匹配,整个 if
条件将匹配:
if (!($format[$data['fmt']]=="A-LAW" && $data['ch']==1 && $data['dr']<=8000 && $bit<=64) &&
!($format[$data['fmt']]=="PCM" && $data['ch']==1 && $data['dr']<=16000 && $bit<=512)) {
echo "wrong format";
}
我正在使用以下代码检查 php 中的 wav 文件。
$fp=$d=$data=$format=$bit=$chn="0";
$fp = fopen('ppk.wav', 'r'); fseek($fp, 20); $d = fread($fp, 18);
$data = unpack('vfmt/vch/Vsr/Vdr/vbs/vbis/vext', $d);
$format = array(0x0001 => 'PCM',0x0003 => 'IEEE Float',0x0006 => 'A-LAW',0x0007 => 'MuLAW',0xFFFE => 'Extensible',);
$bit = rtrim($data['sr'],"0") * rtrim($data['dr'],"0");
$chn = ($data['ch'] = 1) ? "Mono" : "Stereo";
fclose($fp);
echo "{$format[$data['fmt']]} {$data['sr']}Hz {$bit}bit {$chn}";
if ($format[$data['fmt']]!="A-LAW" || $data['ch']>1 || $data['dr']>8000 || $bit>64) {
echo "wrong format";
}
这很好用,并显示文件格式是否错误。
我现在想检查另一个 wav 文件..
因此 wav 文件可以是 A-LAW 单声道 8khz 64 位或 PCM 单声道 16khz 512 位。
但我不确定如何编写 if 语句来检查两者?
例如:
if ( Alaw mon 8khz <64bit || pcm mono 16khz <512)
有什么想法吗?谢谢
您可以将描述格式有效性的条件组合在一起并使用 !
来否定它 - 如果没有一组条件匹配,整个 if
条件将匹配:
if (!($format[$data['fmt']]=="A-LAW" && $data['ch']==1 && $data['dr']<=8000 && $bit<=64) &&
!($format[$data['fmt']]=="PCM" && $data['ch']==1 && $data['dr']<=16000 && $bit<=512)) {
echo "wrong format";
}