在web端播放音频文件
来源:互联网 发布:filmimpact插件 mac版 编辑:程序博客网 时间:2024/06/04 01:33
1. 下载插件js包(该包放在我的资源里面amrjs.js),嵌入到程序中
2. 在html页面使用js
<img src="__PUBLIC__/assets/images/playerpro.png" id="imgs{$vo.log_id}" width="25px" height="25px" onclick='amrplay("__ROOT__{$vo['f_path']}",this,{$vo['log_id']});' style="cursor: pointer;" />
<script>
function E(selector) {
return document.querySelector(selector);
}
function amrplay(url,_self,log_id){
var id="imgs"+log_id;
// document.getElementById(id).src="__PUBLIC__/assets/images/052.png";
alert("开始播放语音");
fetchBlob(url, function(blob) {
playAmrBlob(blob);
});
//document.getElementById(id).src="__PUBLIC__/assets/images/playerpro.png";
//_self.src="__PUBLIC__/assets/images/playerpro.png";
}
var gAudioContext = new AudioContext();
function getAudioContext() {
if (!gAudioContext) {
gAudioContext = new AudioContext();
}
return gAudioContext;
}
function fetchBlob(url, callback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'blob';
xhr.onload = function() {
callback(this.response);
};
xhr.onerror = function() {
alert('Failed to fetch ' + url);
};
xhr.send();
}
function readBlob(blob, callback) {
var reader = new FileReader();
reader.onload = function(e) {
var data = new Uint8Array(e.target.result);
callback(data);
};
reader.readAsArrayBuffer(blob);
}
function fetchAndReadBlob(url, callback) {
fetchBlob(url, function(blob) {
readBlob(blob, callback);
});
}
function playAmrBlob(blob, callback) {
readBlob(blob, function(data) {
playAmrArray(data);
});
}
function convertAudioBlobToAmr(blob) {
readBlob(blob, function(data) {
var ctx = getAudioContext();
ctx.decodeAudioData(data.buffer, function(audioBuffer) {
var pcm;
if (audioBuffer.copyFromChannel) {
pcm = new Float32Array(audioBuffer.length);
audioBuffer.copyFromChannel(pcm, 0, 0);
} else {
pcm = audioBuffer.getChannelData(0);
}
var amr = AMR.encode(pcm, audioBuffer.sampleRate, 7);
playAmrArray(amr);
});
});
}
function playAmrArray(array) {
var samples = AMR.decode(array);
if (!samples) {
alert('Failed to decode!');
return;
}
playPcm(samples);
}
function playPcm(samples) {
var ctx = getAudioContext();
var src = ctx.createBufferSource();
var buffer = ctx.createBuffer(1, samples.length, 8000);
if (buffer.copyToChannel) {
buffer.copyToChannel(samples, 0, 0)
} else {
var channelBuffer = buffer.getChannelData(0);
channelBuffer.set(samples);
}
src.buffer = buffer;
src.connect(ctx.destination);
src.start();
}
function convertAmrBlobToWav(blob) {
readBlob(blob, function(data) {
var buffer = AMR.toWAV(data);
var url = URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' }));
// Play wav buffer
var audio = new Audio(url);
audio.onloadedmetadata = audio.onerror = function() {
URL.revokeObjectURL(url);
};
audio.play();
});
}
</script>
- 在web端播放音频文件
- 在页面里面播放音频文件
- 在APP中播放音频文件
- 在浏览器中播放音频文件的兼容性问题
- 在浏览器中播放音频文件的兼容性问题
- C++在windows下播放wav音频文件
- 播放音频文件
- 播放音频文件
- 在LINUX下怎么播放MP3等音频文件啊?
- 一个关于在Eclipse中播放音频文件的问题
- 在java程序中播放以.wav格式的音频文件
- 在mt7628实现alsa架构解码并播放音频文件
- MFC播放音频文件
- Android播放音频文件
- VC播放音频文件
- DirectMusic播放一个音频文件
- 网页音频文件播放器
- android 播放音频文件
- Java 基础
- Session会话技术
- java中的三种取整函数
- Maven和Gradle对比
- 静态查找:顺序查找和折半查找法
- 在web端播放音频文件
- 《视觉SLAM》第三章课后习题
- OCR表格识别获得青睐 前景大好!
- OpenGL着色器与Phong光照明模型
- Java数据和集合的对比
- 23、24、25
- (VS2010)MFC常用语句
- logback 启动警告提醒,日志不起作用
- Linux线程死锁