jsp阶段:
<audio controls="controls" controlsList="nodownload"><source src="${ctx }/phone/getAudio.ce?type=3&PATHID='+mp+'" type="audio/mpeg"></audio>
java部分:
@RequestMapping("getAudio")
@ResponseBody
public String getAudio(HttpServletRequest request, HttpServletResponse response) throws Exception{
Map<String, Object> map = getPageMapParams();
List<Map<String, Object>> list_new =xcxQqandWxServices.getimgOraudiopath(map);
String path = (String)list_new.get(0).get("TRANCFILEPATH");
if (path!=null) {
String range = request.getHeader("Range");
String[] rs = range.split("\\=");
range = rs[1].split("\\-")[0];
File file = new File(path);
OutputStream os = response.getOutputStream();
FileInputStream fis = new FileInputStream(file);
long length = file.length();
// 播放进度
int count = 0;
// 播放百分比
int percent = (int)(length * 1);
int irange = Integer.parseInt(range);
length = length - irange;
response.addHeader("Accept-Ranges", "bytes");
response.addHeader("Content-Length", length + "");
response.addHeader("Content-Range", "bytes " + range + "-" + length + "/" + length);
response.addHeader("Content-Type", "audio/mpeg;charset=UTF-8");
int len = 0;
byte[] b = new byte[1024];
while ((len = fis.read(b)) != -1) {
os.write(b, 0, len);
count += len;
if(count >= percent){
break;
fis.close();
os.close();
return null;
}
借鉴地址:https://blog.csdn.net/xxzblog/article/details/41312315
html5
audio
是一个很强大的标签,项目中用到很多的就是直接给
audio
标签的src赋值
音频
文件
对应的url,关于
audio
,网上资料很多,这里不详细介绍。本文主要讲述在项目中使用
audio
遇到的坑。项目前台使用vue框架1.如何将
文件
流
转化成对应的url通过录音
文件
对应的uuid 获取录音对应的
文件
流
data(bytes类型),使用let recordSrc = URL.createObj...
file = open(wav_path, 'rb') # 用open函数以二进制方式
读取文件
info = file.read() # 直接读全部的信息就行
# 这里base64.encode返回了bytes数据,但bytes数据没法在json中传输,所以我用str()将其转为str类型数据后,取b'...'内的数据。
base64_info = str(base64.b64encode(info))[2:-1]
file.close()
场景: 使用原生
Audio
代替Flash
播放
器。
问题:
音频
可以
播放
,但是无法快进,即无法跳转某个
播放
位置继续
播放
音频
不是实时
流
,而是后台将
文件
转为
流
传回浏览器,跟直接访问
音频
文件
地址没太大差别。解决思路:查看浏览器直接
播放
音频
文件
时的浏览器响应,发现头部部分字段不一致,解决方法:后台响应添加如下Header:response.addHeader("Accept-Ranges", "bytes")
var $
audio
= document.getElementById("
audio
"+index);
var source = document.createEleme...
很多时候我们需要从服务器上传输
文件
,如果我们把
音频
文件
转成byte[]进行网络传输,然后再在客户端进行
播放
,我们可以将byte[]生成
音频
临时
文件
进行
播放
。
package com.djcken.util;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import j
@RequestMapping(value = "
audio
Listen")
@ResponseBody
public String get
Audio
(HttpServletRequest request, HttpServletResponse response,@RequestParam String path) throws Exception{
Audio
模块用于提供
音频
的录制和
播放
功能,可调用系统的麦克风设备进行录音操作,也可调用系统的扬声器设备
播放
音频
文件
。通过plus.
audio
获取
音频
管理对象
1,开始录音
function startRecord(){
plus.
audio
.getRecorder();//获取当前设备的录音对象
if ( r == null ) {
return;
r.recor
websocket.onmessage = function (event) { var
audio
= document.getElementById('aud'); if (window.URL) {
audio
如果开发项目需要解析
音频
文件
流
,可以使用 iOS 的
Audio
File Stream Services。
Audio
File Stream Services 支持的
音频
数据格式:AIFFAIFCWAVECAFNeXTADTSMEPEG
Audio
Layer 3AAC解析
音频
文件
流
的过程如下:使用
Audio
FileStreamOpen 方法创建
音频
文件
流
的解析器:OS...
0x00 序近日有这样一个需求,在web端
播放
PCM裸
流
,即数据提供方给出的都是**.pcm
文件
,而我们需要在页面上给出该
音频
的
播放
控制器(至少可以支持play、pause)。