@SteveOC64的方法涉及创建一个新的Audio实例。如果您已经有了像
<audio id="audio" controls></audio>
您可以尝试以下代码。
app.factory('audio', function($document) {
var audioElement = $document[0].getElementById('audio');
audioElement.autoPlay = true;
return {
audioElement: audioElement,
play: function(filename) {
audioElement.src = filename;
audioElement.play();
},
resume: function() {
audioElement.play();
},
pause: function() {
audioElement.pause();
},
stop: function() {
audioElement.pause();
audioElement.src = audioElement.currentSrc;
},
incVol: function() {
if (audioElement.volume < 1) {
audioElement.volume = (audioElement.volume + 0.1).toFixed(2);
}
return audioElement.volume;
},
decVol: function() {
if (audioElement.volume > 0) {
audioElement.volume = (audioElement.volume - 0.1).toFixed(2);
}
return audioElement.volume;
},
timer: function(callback) {
audioElement.ontimeupdate = function() {
callback(audioElement.duration, audioElement.currentTime)
};
},
}
});
在你的控制器中注入audio
工厂后,你可以像这样调用它
audio.play('/api/resource?resource=' + uri);
如果这是事件驱动的,例如在单击另一个元素时播放音频。
$scope.$apply(function() {
$scope.audioPlayer = true;
audio.play('/api/resource?resource=' + uri);
$scope.isAudioPlaying = true;
});
如果有人正在寻找视频工厂:
HTML
<video id="video" controls></video>
工厂
app.factory('video', function($document) {
var videoElement = $document[0].getElementById('video');
videoElement.autoPlay = true;
return {
videoElement: videoElement,
play: function(filename) {
videoElement.src = filename;
videoElement.play();
},
resume: function() {
videoElement.play();
},
pause: function() {
videoElement.pause();
},
stop: function() {
videoElement.pause();
videoElement.src = videoElement.currentSrc;
},
incVol: function() {
if(videoElement.volume < 1) {
videoElement.volume = (videoElement.volume + 0.1).toFixed(2);
}
return videoElement.volume;
},
decVol: function() {
if(videoElement.volume > 0) {
videoElement.volume = (videoElement.volume - 0.1).toFixed(2);
}
return videoElement.volume;
},
timer: function(callback) {
videoElement.ontimeupdate = function() {
callback(videoElement.duration, videoElement.currentTime)
};
},
}
});
你可以这样调用它:video.play('/api/resource?resource=' + uri);
希望这能帮到你!