获取音频时长的总结

需要实现的需求:
前端展示录音的时长

实现该需求的前提条件:
1.深海捷(录音厂商)提供了两个关于录音的接口,一个是下载接口(访问接口,直接就下载音频文件了),
另一个接口是播放接口(接口返回一个html文件,文件中用Object标签实现了播放,可是只能在ie下播放,在chrom中无法展示播放器)
2.如果使用深海捷的服务拨打电话后,是会有回调事件,返回录音时长存到数据库的,所以这种场景已经有录音时长的数据,前端直接展示就 可以
3.还有一种场景就是接下来需要实现的场景,用户手动上传录音,这个时候数据库是没有录音时长数据,在做此需求前,是有历史存量数据的 所以觉得比较好的方式是,当用户需要查看该录音时,如果数据库没有该录音的时长,就用一个方法去获取录音时长,并且入库,可以避免 多次计算,做到一人计算,便可多人查看的效果

思路:
1.前端使用audio标签的去获取录音时长,可是后端只有一个下载录音的接口,所以如果给audio的src设置成下载的url的话,文件就直接下载了,无法获取时长,要想实现该方法,则需要后端转发一下请求,把下载接口改成返回音频文件的接口
2.后端直接去请求下载接口,返回音频文件,在后端解析获取音频时长,并且入库

实操:
1.思路1实操阻碍点,使用request请求下载接口,转发数据是无法改变成不下载的方式,该方法有待研究
2.最后采用了思路2的的方法,后端用到了request包,使用request.get去请求音频下载接口,这里要注意需要设置request.get({rejectUnauthorized: false, url }),没有设置rejectUnauthorized为false的话,请求会报错。获取到接口返回的数据流之后,使用get-audio-duration包的getAudioDurationInSeconds方法获取录音的时长,然后存储到数据库

疑惑:
1.后端使用request获取通话录音时,返回的数据是以什么形式存在的,流?文件?buffer?
2.如何通过接口转发,发原本是下载接口的,改成返回audio可直接播放的接口形式,修改content-disposition??

原文地址:https://www.cnblogs.com/krisZzz/p/11043682.html

时间: 2024-09-28 03:10:06

获取音频时长的总结的相关文章

微信语音——判断上传的音频时长

今天在测试同事的微信平台的发送语音的时候,发现有时候语音能发过来,有时候就不行,经过检查,发现丢掉了检测音频时长(微信里面语言时长要限定在60S内),好吧,我补上,闲着也是闲着~ 首先是读取语音的时长: <span style="font-size:14px;"> /// <summary> /// 获取上传音频的时间长度 /// </summary> /// <param name="strFullUrl">The

vue / js使用video获取视频时长

项目中遇到上传视频功能,需要有预览和获取视频时长功能,因之前使用upload(有需要的话可以参考下我之前的文章),这里就不赘述,直接用来上传视频,不过在上传之前和上传成功后的钩子里,获取不到时长: 没有时长怎么办呢,只能用原生JS来获取: 上传成功以后,将成功的路径绑定给video 使用js获取duration并赋给时间参数 这时你会发现,你得到的值是NaN 视频还未加载下来,无法同步获取到,使用定时器即可解决 OK了,现在可以获取到了 希望本文对你有所帮助! 原文地址:https://www.

获取视频时长

//            NSDictionary *opts = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] //                                                             forKey:AVURLAssetPreferPreciseDurationAndTimingKey]; //            AVURLAsset *urlAsset

用js获取视频播放时长

用js实现读取本地mp4文件时长 利用h5 video标签加载视频文件,在读取duration就可以了 问题在于要更换文件,使用<input type="file" > 标签发现读取的文件路径是隐藏的c:/fakepath/xxx.mp4 给video更换src时候会提示找不到文件... 又找了很久,大多是加载flash控件然后通过flash再取,不太喜欢这么做. 如今这H5的时代感觉这个小功能应该不是问题,又想了想,之前做过js读取本地图片在web上做预览,估计读个视频应

js实现视频本地预览,一级获取播放时长

<video style="display:none;" controls="controls" id="aa" oncanplaythrough="myFunction(this)"></video> <input type="file" onchange="changeFile(this)" > <script> function my

使用ffmpeg获取视频时长等

查看视频信息的命令:ffmpeg -i 视频文件,如下: ffmpeg -i ryzh.mp4 控制台输出: 原文地址:http://blog.51cto.com/4754569/2324534

PHP获取音频mp3文件时长或音频文件其它参数属性

今天在开发项目中遇到一个问题,要获取到上传音频的时长,从而展示在前端页面 最后找到解决方案: 1.首先,我们需要先下载一份PHP类-getid3  https://codeload.github.com/JamesHeinrich/getID3/zip/master 2.解压文件,把整个文件夹上传到服务器 3.贴代码 include_once 'getid3/getid3.php'; //引入该文件 $getID3 = new getID3(); //实例化类 $ThisFileInfo = @

获取音、视频时长(NAudio,Shell32,FFmpeg)

参考网址:https://blog.csdn.net/u013810234/article/details/57471780 以下为本次测试用到的音.视频格式: audio :".wav;.mp3;.wma;.ra;.mid;.ogg;.ape;.au;.aac;"; vedio :".mp4;.mpg;.mpeg;.avi;.rm;.rmvb;.wmv;.3gp;.flv;.mkv;.swf;.asf;"; Note: 1. 测试音.视频均为对应格式的有效文件(下

【Android端 APP 启动时长获取】启动时长获取方案及具体实施

一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分配一个新的进程给应用. (2)热启动:程序的进程依然存在,启动时通过已有进程启动进入到Activity显示页面的,就是热启动,或者从Android官网来看我们获取到的其实是温启动时长,就是Activity不存在的情况. (3)新装包的启动时长: 新装包的启动时长,预估是最长的,并且在5.0以下及5.