JavaWeb項(xiàng)目音頻資源播放實(shí)現(xiàn)方法詳解
一、方式1:登陸系統(tǒng)后進(jìn)行播放,即在瀏覽器端
需要在JSP頁(yè)面編寫(xiě)相關(guān)代碼
<div id="midea" style="display: none;">
<object id='player' height='100' width='200' classid='CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6'>
<param name='AutoStart' value='0' />
<param name='Balance' value='0' />
<param name='enabled' value='-1' />
<param name='EnableContextMenu' value='-1' />
<param name='url' value='${pageContext.request.contextPath}/player/bestduanxin.wav' />
<param name='volume' value='100' />
<param name='uiMode' value='mini' />
</object>
</div>
在js腳本里調(diào)用
document.getElementById('player').controls.play();
setTimeout(stopPlayer,6000);
function stopPlayer(){
document.getElementById('player').controls.stop();
}
二、方式2:不用登陸即可播放,即在服務(wù)器端
需在java后臺(tái)編寫(xiě)相關(guān)代碼
import java.applet.Applet;
import java.applet.AudioClip;
import java.net.URL;
import java.util.Timer;
import java.util.TimerTask;
import javax.servlet.http.HttpServletRequest;
public class AudioPlayer {
public static void player(HttpServletRequest request){
URL audioUrl=null;
try {
//項(xiàng)目URL根路徑
String path = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();
//音頻資源地址
audioUrl = new URL(path+"/player/bestduanxin.wav");
//創(chuàng)建音頻播放類
final AudioClip audioClass=Applet.newAudioClip(audioUrl);
audioClass.loop();
//new一個(gè)線程執(zhí)行停止播放
TimerTask task = new TimerTask() {
@Override
public void run() {
audioClass.stop();
}
};
//new一個(gè)定時(shí)器,指定播放若干秒后執(zhí)行停止播放
Timer timer = new Timer();
timer.schedule(task, GetPropertiesValue.getTimes()*GetPropertiesValue.getDuration());
} catch (Exception e) {
e.printStackTrace();
}
}
}
附獲取音頻文件時(shí)長(zhǎng)的方法
File file = new File(url.substring(0, url.indexOf("WEB-INF"))+"player/bestduanxin.wav");<br>Clip clip = AudioSystem.getClip();
AudioInputStream ais = AudioSystem.getAudioInputStream(file);
clip.open(ais);<br>//得到的時(shí)間為微秒(μs),除以1000得到毫秒(ms)數(shù)
System.out.println(clip.getMicrosecondLength()/1000);
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot2基于重復(fù)創(chuàng)建bean的問(wèn)題及解決
這篇文章主要介紹了SpringBoot2基于重復(fù)創(chuàng)建bean的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
Java基礎(chǔ)之ArrayList的擴(kuò)容機(jī)制
這篇文章主要介紹了Java基礎(chǔ)之ArrayList的擴(kuò)容機(jī)制,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下2021-05-05
SpringBoot中利用@Valid和@Validated進(jìn)行參數(shù)校驗(yàn)
為了保證數(shù)據(jù)的正確性、完整性,前后端都需要進(jìn)行數(shù)據(jù)檢驗(yàn),作為一名后端開(kāi)發(fā)工程師,不能僅僅依靠前端來(lái)校驗(yàn)數(shù)據(jù),我們還需要對(duì)接口請(qǐng)求的參數(shù)進(jìn)行后端的校驗(yàn),所以本文給大家介紹了SpringBoot中利用@Valid和@Validated進(jìn)行參數(shù)校驗(yàn),需要的朋友可以參考下2024-09-09
Spring boot 整合KAFKA消息隊(duì)列的示例
這篇文章主要介紹了Spring boot 整合 KAFKA 消息隊(duì)列的示例,幫助大家更好的理解和使用spring boot框架,感興趣的朋友可以了解下2020-10-10
java精度計(jì)算代碼 java指定精確小數(shù)位
這篇文章主要為大家詳細(xì)介紹了java精度計(jì)算代碼,java指定精確小數(shù)位,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02
Java二維碼登錄流程實(shí)現(xiàn)代碼(包含短地址生成,含部分代碼)
近年來(lái),二維碼的使用越來(lái)越風(fēng)生水起,本篇文章主要介紹了Java二維碼登錄流程實(shí)現(xiàn)代碼,其中包含短地址生成,有興趣的可以了解一下。2016-12-12
解決Netty解碼http請(qǐng)求獲取URL亂碼問(wèn)題
這篇文章主要介紹了解決Netty解碼http請(qǐng)求獲取URL亂碼問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

