wavesurfer 实时获取经过的时间
wavesurfer get elapsed time in real time
我正在使用 katspaugh's waveSurfer library 播放声音文件。
我写代码用这种方式显示'elapsed time / total time'。
waveSurfer.on('play', function() {
$scope.getCurrentDuration();
});
$scope.getCurrentDuration()
是将浮点型变量转换为字符串型变量的函数,如下:
$scope.getDuration = function() {
if ($scope.waveSurferReady) {
var time = waveSurfer.getDuration(); // get duration(float) in second
var minute = Math.floor(time / 60); // get minute(integer) from time
var tmp = Math.round(time - (minute * 60)); // get second(integer) from time
var second = (tmp < 10 ? '0' : '') + tmp; // make two-figured integer if less than 10
return String(minute + ':' + second); // combine minute and second in string
}
else {
return 'not ready yet'; // waveSurfer is not ready yet
}
};
但问题是,
在这部分:
waveSurfer.on('play', function() ...)
回调函数只执行一次。
我希望回调函数会定期调用,但它只执行一次,因此结果只在开始时显示经过时间。
我该如何解决这个问题?
正在调查 source, I've found the audioprocess
event paired with html5 timeupdate 事件。
试试吧。
waveSurfer.on('audioprocess', function() {
// do stuff here
});
我正在使用 katspaugh's waveSurfer library 播放声音文件。
我写代码用这种方式显示'elapsed time / total time'。
waveSurfer.on('play', function() {
$scope.getCurrentDuration();
});
$scope.getCurrentDuration()
是将浮点型变量转换为字符串型变量的函数,如下:
$scope.getDuration = function() {
if ($scope.waveSurferReady) {
var time = waveSurfer.getDuration(); // get duration(float) in second
var minute = Math.floor(time / 60); // get minute(integer) from time
var tmp = Math.round(time - (minute * 60)); // get second(integer) from time
var second = (tmp < 10 ? '0' : '') + tmp; // make two-figured integer if less than 10
return String(minute + ':' + second); // combine minute and second in string
}
else {
return 'not ready yet'; // waveSurfer is not ready yet
}
};
但问题是,
在这部分:
waveSurfer.on('play', function() ...)
回调函数只执行一次。
我希望回调函数会定期调用,但它只执行一次,因此结果只在开始时显示经过时间。
我该如何解决这个问题?
正在调查 source, I've found the audioprocess
event paired with html5 timeupdate 事件。
试试吧。
waveSurfer.on('audioprocess', function() {
// do stuff here
});