php声波模拟开门,PHP 根据wav文件绘制声波图
效果图:
参考:
http://php.net/manual/zh/function.pack.php
https://www.jianshu.com/p/947528f3dff8
http://blog.csdn.net/midfar/article/details/7227758
function wav_graph($file)
{
if(!is_file($file)) return false;
$fp=fopen($file, 'r');
$size=36;
$offset=0;
$raw=fread($fp, $size);
$header=unpack('A4Riff/VSize/A4Type/A4Head/VHeadSize/vAudioFormat/vNumChannels/VSampleRate/VByteRate/vBlockAlign/vBitsPerSample', $raw);
$offset+=$size;
fseek($fp, $offset);
while(true){
$size=8;
$raw=fread($fp, 8);
$chunk=unpack('A4ID/VSize', $raw);
if($chunk['ID']==='data') break;
$offset+=($size+$chunk['Size']);
fseek($fp, $offset);
}
$samples=$chunk['Size']/$header['BlockAlign'];//wave length = samples
$px_per_second=100;//px
$second_per_sample=1/$header['SampleRate'];//s
$time=$samples*$second_per_sample;//time of media
$width=$px_per_second*$time;
$samples_per_px=$header['SampleRate']/$px_per_second;//
$amplitude=pow(2,intval($header['BitsPerSample'])-1);//2^16 max amplitude
$height=400;//px height of one channel
$px_per_amp=$height/$amplitude;//px per amplitude
//var_dump($width);var_dump($height);exit;
$im=imagecreate($width, $height*$header['NumChannels']);//two channels
$bg_color=imagecolorallocate($im, 255, 255, 255);
$line_color=imagecolorallocate($im, 255, 0, 0);
$offset+=8;
fseek($fp, $offset);
$x=0;
$y1=[];//start y
$y2=[];//end y
for($i=0;$i
$y1[$i]=$height*$i+($height/2);//start height of per channel
}
while (true) {
$raw=fread($fp, $header['BlockAlign']*$samples_per_px);// read n samples in 1 px
if($raw==false) break;
$len=strlen($raw);//bytes
$sample=unpack('s*', $raw);
$y_sum=[];
for($i=0;$i
$y_sum[$i]=0;
}
foreach ($sample as $key=>$value) {
$channel=($key+1)%intval($header['NumChannels']);//0 or 1
$y_sum[$channel]+=$value;
}
foreach ($y_sum as $channel=>$value) {
$y_ave=$value/($len/$header['BlockAlign']);//average of y
$y2[$channel]=$y_ave*$px_per_amp+$height*$channel+($height/2);
imageline($im,$x,$y1[$channel],$x+1,$y2[$channel],$line_color);
$y1[$channel]=$y2[$channel];
}
$x++;
}
fclose($fp);
header("Content-type:image/png");
imagepng($im);
imagedestroy($im);
}
wav_graph('test.wav');
php声波模拟开门,PHP 根据wav文件绘制声波图相关推荐
- php声波模拟开门,关于 php使用扩展控制树莓派io 驱动超声波测距
经过昨天一下午,终于写好了基于 只需要安装完毕,就可以调用函数了:<?php /** * Created by PhpStorm. * User: tioncico * Date: 19-7-6 ...
- C# 模拟PCM数据并创建WAV文件
最近由于着手一个无线电接受机信号处理的工作,需要处理解调模式下传递的PCM数据,绘制波形并播放声音,特此记录. 模拟PCM数据,保存到本地 private void button1_Click(obj ...
- 【音频驱动】Linux之ALSA声卡、WAV文件相关概念
Linux之ALSA音频相关概念 Linux之ALSA音频相关概念 一.ALSA简介 二.音频相关概念 1.采样频率 2.量化位数(ADC精度) 3.声道数 4.交错模式 三.WAV文件 1.编码格式 ...
- NAudio用法详解(7)Wav文件结构分析及NAudio相关对象对应关系分析
目录 波形文件的基础知识 波形文件的存储过程 与声音有关的三个参数 1.采样频率 2.采样位数 3.声道数 WAV文件的编码 文件整体结构 RIFF区块 fmt区块(FORMAT区块) DATA区块 ...
- 语音识别1: 音频信号采集、并存入 wav文件
1 说明 语音识别的基本操作是:1)能够录音 2)能够将录音文件存储.以下将列出此操作,并逐条语句讲解. 2 音频录制代码 import pyaudio import wave from tqdm i ...
- 监听实时生成的双声道wav文件转文字
#监听文件夹生成的双声道wav文件实时转文字 想要把软短话生成的双声道录音文件实时转文字做内容质检 思路是监听某文件夹的文件创建事件 拆分双声道wav 调用转文字接口 使用的阿里的TTS 实时语音识别 ...
- (-):wav文件转化为txt文件
首先声明一下,由于水平有限,所以这里的代码没有加入错误处理程序,为version1: 第一步:明确wav格式: 一.综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标 ...
- android打开wav格式,FileNotFoundException从Android资产中打开wav文件
在我们的android应用程序中,我们打开位于assets/config/notification.wav中的wav文件.要打开和播放声音,我们使用下面的代码:FileNotFoundExceptio ...
- C#文字转语音,实时播放以及mp3,wav文件保存
源码下载地址:https://download.csdn.net/download/horseroll/10500847 无积分付费下载地址:https://download.csdn.net/dow ...
最新文章
- PHP标记风格,编码规范
- python测验4_python接口自动化测试四:代码发送HTTPS请求
- 软件设计文档国家标准_GB8567--88
- vb.net限制软件使用次数_新增投屏及倍数播放,这款软件iOSAndroid全都有,影视神器,抓紧体验...
- 结构设计模式 - 复合设计模式
- Codeforces Round #568 (Div. 2)网卡垫底记
- centos7 修改时区
- 期末大作业图书管理系统(c++)源代码
- QT ubuntu下 多画面视频监控播放器rtsp播放器
- PS学习笔记6-选区工具
- 【026】国务院督查组莅临翼辉信息参观调研
- 红外线解码 VS1838B接头 12864液晶 51单片机 合众之星万能遥控器
- 日化行业DMS全渠道商城系统
- JavaScript 实现延迟合并处理任务
- 免费 whois 查询 API
- CentOS7中文输入法,拼音输入法
- 基于PHP的精品课程教学网站
- Apache ShenYu 集成 RocketMQ 实时采集海量日志的实践
- 【成神之路】开放设计编程相关面试题
- Hashtable的用法
热门文章
- 基于Spark的数据清洗与转换
- qfile超过下载文件容量_如何下载视频网站上的视频,这里有方法
- 零基础如何学好软件测试?
- android应用加固后闪退,360加固保加固后打开app即闪退
- unicode字符范围(包括中文、日语、韩文和各种特殊字符集)
- 数据仓库模型报表设计
- 【超简单,保姆级】❤️Linux 安装 Windows 软件,微信、QQ、TIM等,再也不用来回切换了!❤️【建议收藏】
- python编写操作系统实验_6.828 操作系统 lab2 实验报告
- 软件测试基础测试分析法
- OpenCV 常用函数汇总(normalize、getStructuringElement、erode、dilate)