国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

多媒體API

這篇具有很好參考價(jià)值的文章主要介紹了多媒體API。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

私人博客

許小墨のBlog —— 菜雞博客直通車

系列文章完整版,配圖更多,CSDN博文圖片需要手動上傳,因此文章配圖較少,看不懂的可以去菜雞博客參考一下配圖!

系列文章目錄

前端系列文章——傳送門
后端系列文章——傳送門



多媒體標(biāo)簽

video

只接受幾種視屏格式:ogg、mp4、avi

基本使用:

<video src="視屏文件路徑"></video>
<!-- 兼容寫法 -->
<video>
    <source src="路徑1" type="video/mp4"></source>
    <source src="路徑2" type="video/ogg"></source>
    <source src="路徑3" type="video/avi"></source>
</video>

controls屬性,出現(xiàn)默認(rèn)的控制面板

autoplay屬性,自動播放

loop屬性,循環(huán)播放

width和height屬性,用來設(shè)置視屏可視區(qū)域的尺寸,但是寬和高一直會保持等比,所以設(shè)置一個就行了,如果都設(shè)置了,會出現(xiàn)黑邊,但可視區(qū)域是等比的

audio

只接受ogg和mp3格式,使用方式和video是一樣的

<audio src="視屏文件路徑"></audio>
<!-- 兼容寫法 -->
<audio>
    <source src="路徑1" type="audio/mp3"></source>
    <source src="路徑2" type="audio/ogg"></source>
</audio>

controls屬性,出現(xiàn)默認(rèn)的控制面板

autoplay屬性,自動播放

loop屬性,循環(huán)播放

多媒體標(biāo)簽的API

在谷歌瀏覽器中,默認(rèn)不能自動播放,默認(rèn)直接調(diào)用play方法播放,需要一個自定義按鈕來解決或設(shè)置video靜音

/* 方法 */
video/audio.play() // 播放
video/audio.pause() // 暫停
/* 屬性 */
video.duration // 視屏總時(shí)長
video.muted // 設(shè)置媒體靜音,值為true或false,獲取媒體是否靜音
video.volume // 獲取媒體當(dāng)前聲音(0~1),設(shè)置聲音(0~1)
video.currentTime // 獲取媒體當(dāng)前時(shí)間,設(shè)置當(dāng)前時(shí)間,單位秒
video/audio.paused // 查看媒體是否暫停
video/audio.playbackRate // 獲取/設(shè)置播放倍速
/* 事件 */
loadstart:視屏開始加載時(shí)觸發(fā)
progress:瀏覽器正在下載視屏?xí)r觸發(fā) - 相當(dāng)于在加載
canplay:媒體加載完畢,可以播放的時(shí)候觸發(fā)
play:視屏正在播放的時(shí)候觸發(fā)
pause:視屏?xí)和5臅r(shí)候觸發(fā)
seeking:視屏開始要跳到新位置的時(shí)候觸發(fā)
seeked:視屏已經(jīng)跳到新位置的時(shí)候觸發(fā)
waiting:視屏加載等待時(shí)觸發(fā)
timeupdate:只要播放時(shí)間更改就會觸發(fā)
ended:媒體播放結(jié)束時(shí)觸發(fā)
error:視屏播放錯誤時(shí)觸發(fā)
volumechange:視屏音量改變時(shí)觸發(fā)
ratechange:視屏播放速度更改時(shí)觸發(fā)

自定義多媒體控件

布局

<div class="media">
    <div class="playOrPause">
        <i class="iconfont icon-zanting"></i>
    </div>
    <div class="time">
        <span class="currentMinute">00</span>
        :
        <span class="currentSecond">00</span>
        /
        <span class="durationMinute">00</span>
        :
        <span class="durationSecond">00</span>
    </div>
    <div class="playRange">
        <div class="currentRange"></div>
        <div class="playBtn"></div>
    </div>
    <div class="volume">
        <div class="volumeRange">
            <div class="currentVolume"></div>
            <div class="volumeBtn"></div>
        </div>
        <i class="iconfont icon-volume"></i>
    </div>
</div>

樣式

.media{
    width: 800px;
    height: 50px;
    border:3px solid #bbb;
    margin:300px auto;
}
.media>div{
    float:left;
    line-height: 50px;
    margin:0 10px;
}
.media>div.playRange{
    width: 200px;
    height: 6px;
    background-color: #333;
    margin:22px 10px;
    border-radius:3px;
    position: relative;
}
.media>div.playRange .currentRange{
    width: 100px;
    height: 6px;
    background-color: rgb(9, 143, 153);
    position:absolute;
    left: 0;
    top: 0;
}
.media>div.playRange .playBtn{
    width: 20px;
    height: 20px;
    background-color:rgb(9, 143, 153);
    border-radius:50%;
    position: absolute;
    left: 90px;
    top: -7px;
}
.media .volume{
    position:relative;
}
.media .volumeRange{
    width: 4px;
    height: 100px;
    background-color: #333;
    border-radius:2px;
    position:absolute;
    top:-100px;
    left: 10px;
    display:none;
}
.media .volumeRange .currentVolume{
    width: 4px;
    height: 50px;
    background-color: blue;
    border-radius:2px;
    position:absolute;
    left: 0;
    bottom:0;
}
.media .volumeRange .volumeBtn{
    width: 15px;
    height: 15px;
    border-radius:50%;
    background-color: blue;
    position:absolute;
    left: -5px;
    bottom:40px;
}
.media i{
    font-size: 24px;
}

js效果:

// 控制音量的面板顯示隱藏
$('.media .volume').hover(function(){
    $(this).find('.volumeRange').show()
},function(){
    $(this).find('.volumeRange').hide()
})

// 點(diǎn)擊切換小圖標(biāo)
$('.media .playOrPause i').click(function(){
    if($(this).hasClass('icon-bofang')){
        $(this).removeClass('icon-bofang').addClass('icon-zanting')
        // 多媒體播放
        $('audio')[0].play()
    }else{
        $(this).removeClass('icon-zanting').addClass('icon-bofang')
        // 多媒體暫停
        $('audio')[0].pause()
    }
})
$('.media .volume i').click(function(){
    if($(this).hasClass('icon-volume')){
        $(this).removeClass('icon-volume').addClass('icon-jingyin')
        // 讓多媒體靜音
        $('audio')[0].muted = true
        // 讓音量小球下來
        $('.currentVolume').height(0)
        console.log(-$('.volumeBtn').height()/2)
        $('.volumeBtn').css('top',$('.volumeRange').height()-$('.volumeBtn').height()/2 + "px")
    }else{
        $(this).removeClass('icon-jingyin').addClass('icon-volume')
        // 取消靜音
        $('audio')[0].muted = false
    }
})
// 拖拽播放進(jìn)度
$('.playRange').mousedown(function(e){
    // 讓小球過來 - 獲取光標(biāo)按下的位置,計(jì)算小球的left
    var x = e.pageX;
    var left = x - $('.playBtn').width()/2;
    $('.playBtn').offset({left})
    var width = $('.playBtn').position().left + $('.playBtn').width()/2
    $('.currentRange').width( width )
    // // 根據(jù)當(dāng)前拖拽好的位置設(shè)置多媒體
    // // 比例 = 當(dāng)前播放過的進(jìn)度條長度 / 進(jìn)度條總長度
    var percent = width / $('.playRange').width()
    // 當(dāng)前播放時(shí)長 = 總時(shí)長*比例
    var duration = $('audio')[0].duration;
    var currentTime = percent * duration;

    $('audio')[0].currentTime = currentTime;
    // $('audio')[0].pause()
    // 移動
    $(this).mousemove(function(e){
        // 讓小球過來 - 獲取光標(biāo)按下的位置,計(jì)算小球的left
        var x = e.pageX;
        var left = x - $('.playBtn').width()/2;
        $('.playBtn').offset({left})
        var width = $('.playBtn').position().left + $('.playBtn').width()/2
        $('.currentRange').width( width )
        $('audio')[0].pause()
        $('.media .playOrPause i').removeClass('icon-zanting').addClass('icon-bofang')
    })
})
$('.playRange').mouseup(function(e){
    $('.playRange').off('mousemove')
    var width = $('.currentRange').width()
    // 根據(jù)當(dāng)前拖拽好的位置設(shè)置多媒體
    // 比例 = 當(dāng)前播放過的進(jìn)度條長度 / 進(jìn)度條總長度
    var percent = width / $('.playRange').width()
    // 當(dāng)前播放時(shí)長 = 總時(shí)長*比例
    var duration = $('audio')[0].duration;
    var currentTime = percent * duration;
    $('audio')[0].currentTime = currentTime;
    $('audio')[0].play()
    $('.media .playOrPause i').removeClass('icon-bofang').addClass('icon-zanting')
})

// 拖拽音量
$('.volumeRange').mousedown(function(e){
    // 讓小球過來 - 獲取光標(biāo)按下的位置,計(jì)算小球的left
    var y = e.pageY;
    var top = y - $('.volumeBtn').width()/2
    $('.volumeBtn').offset({top})
    $('.currentVolume').height( $('.volumeRange').height() - $('.volumeBtn').position().top - $('.volumeBtn').height()/2 )
    // 計(jì)算音量的比例
    var volume = ($('.currentVolume').height() / $('.volumeRange').height()).toFixed(1)-0
    $('audio')[0].volume = volume

    $(this).mousemove(function(e){
        var y = e.pageY;
        var top = y - $('.volumeBtn').width()/2
        $('.volumeBtn').offset({top})
        $('.currentVolume').height( $('.volumeRange').height() - $('.volumeBtn').position().top - $('.volumeBtn').height()/2 )
        // 計(jì)算音量的比例
        var volume = ($('.currentVolume').height() / $('.volumeRange').height()).toFixed(1)-0
        $('audio')[0].volume = volume
    })
})
$(document).mouseup(function(e){
    $('.volumeRange').off('mousemove')
})

// 當(dāng)多媒體加載完成的時(shí)候獲取多媒體的播放時(shí)長
$('audio')[0].addEventListener('canplay',canplay)
function canplay(){
    var duration = this.duration; // 秒
    // 換算成分鐘和秒
    var minute = parseInt(duration/60)
    var second = parseInt(duration%60);
    minute = minute<10?'0'+minute:minute;
    second = second<10?'0'+second:second;
    $('.durationMinute').text(minute)
    $('.durationSecond').text(second)
    // 將播放進(jìn)度小球放到0的位置
    $('.playBtn').css('left',-$('.playBtn').width()/2 + "px")
    $('.currentRange').width(0)
    // 將音量設(shè)置在最頂端
    $('.volumeBtn').css('top',-$('.volumeBtn').height()/2 + "px")
    $('.currentVolume').height($('.volumeRange').height())
}

// 正在播放過程中獲取當(dāng)前播放的時(shí)長
$('audio')[0].addEventListener('timeupdate',timeupdate)
function timeupdate(){
    // 獲取 當(dāng)前時(shí)長
    var currentTime = this.currentTime;
    var minute = parseInt(currentTime/60)
    var second = parseInt(currentTime%60);
    minute = minute<10?'0'+minute:minute;
    second = second<10?'0'+second:second;
    $('.currentMinute').text(minute)
    $('.currentSecond').text(second)
    // 計(jì)算當(dāng)前播放過多少的比例
    var duration = this.duration; 
    var percent = currentTime / duration;
    // 計(jì)算播放過的進(jìn)度條的長度
    var width = $('.playRange').width() * percent;
    $('.currentRange').width(width)
    $('.playBtn').css('left',width-$('.playBtn').width()/2 + "px")
}

// 多媒體播放結(jié)束
$('audio')[0].addEventListener('ended',ended)
function ended(){
    $('.media .playOrPause i').removeClass('icon-zanting').addClass('icon-bofang')
}

本博文缺失大量圖片,嚴(yán)重影響內(nèi)容完整性以及閱讀體驗(yàn),完整內(nèi)容請前往本人菜雞博客——許小墨のBlog文章來源地址http://www.zghlxwxcb.cn/news/detail-432029.html

到了這里,關(guān)于多媒體API的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 多媒體開發(fā)之cgo

    多媒體開發(fā)之cgo

    ???? go語言作為近十年來優(yōu)秀的現(xiàn)代開發(fā)語言的代表,由于繼承了c語言的簡潔和很多現(xiàn)代語言的表達(dá)方式,在廣泛的應(yīng)用場景中得到眾多愛好者的喜愛,如何將go和c、c++進(jìn)行聯(lián)合開發(fā),拓展整個開發(fā)生態(tài),不用重復(fù)造輪子,掌握cgo可以讓你得心應(yīng)手的在c和go之間傳遞信息,

    2024年02月16日
    瀏覽(27)
  • AIGC生成多媒體流程

    AIGC生成多媒體流程

    給定 生成多個故事標(biāo)題 多個故事標(biāo)題進(jìn)行反向推導(dǎo)出 再生成標(biāo)題 直到達(dá)到一個相似度 多個標(biāo)題固定總結(jié)合并為一個標(biāo)題 根據(jù)生成故事多個章節(jié)標(biāo)題 多個章節(jié)標(biāo)題反向生成一個標(biāo)題 對比前后兩個標(biāo)題相似度 不斷重復(fù)直到達(dá)到一定相似度 第一個章

    2024年02月12日
    瀏覽(95)
  • 鴻蒙實(shí)戰(zhàn)多媒體運(yùn)用:【音頻組件】

    鴻蒙實(shí)戰(zhàn)多媒體運(yùn)用:【音頻組件】

    音頻組件用于實(shí)現(xiàn)音頻相關(guān)的功能,包括音頻播放,錄制,音量管理和設(shè)備管理。 圖 1 ?音頻組件架構(gòu)圖 基本概念 采樣 采樣是指將連續(xù)時(shí)域上的模擬信號按照一定的時(shí)間間隔采樣,獲取到離散時(shí)域上離散信號的過程。 采樣率 采樣率為每秒從連續(xù)信號中提取并組成離散信號

    2024年03月10日
    瀏覽(90)
  • 計(jì)算機(jī)網(wǎng)絡(luò)——多媒體網(wǎng)絡(luò)

    計(jì)算機(jī)網(wǎng)絡(luò)——多媒體網(wǎng)絡(luò)

    通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家, 跳轉(zhuǎn)到網(wǎng)站 我的計(jì)算機(jī)網(wǎng)絡(luò)專欄,是自己在計(jì)算機(jī)網(wǎng)絡(luò)學(xué)習(xí)過程中的學(xué)習(xí)筆記與心得,在參考相關(guān)教材,網(wǎng)絡(luò)搜素的前提下,結(jié)合自己過去一段時(shí)間筆記整理,而推出的該專欄,整體架構(gòu)是根據(jù)計(jì)算機(jī)網(wǎng)絡(luò) 自頂向下 方法而整理

    2024年02月20日
    瀏覽(21)
  • HTML5多媒體單元測試

    (單選題, 10.0分) 為元素指定多個視頻源使用( )標(biāo)簽(元素)。 A select B datalist C source D src (單選題, 10.0分) 判斷瀏覽器是否支持指定的媒體類型需用到audio或video對象的( )方法。 A load() B play() C pause() D canPlayType() (多選題, 10.0分) HTML5新增了強(qiáng)大的多媒體的功能,主要體現(xiàn)在

    2024年02月04日
    瀏覽(28)
  • Java UI組件和多媒體

    Java UI組件和多媒體

    目錄 1、使用單選按鈕 2、選擇幾何圖形 ?3、交通信號燈 ?4、演示TextField的屬性 5、演示TextArea的屬性 6、選擇一種字體 ?7、演示 Label 的屬性 ?8、使?用ComboBox 和 ListView? 9、使?用 ScrollBar 和 Slider ? ?10、模擬:一個轉(zhuǎn)動的風(fēng)扇 編寫一個 GUI 程序如圖所示 。 可以使用按鈕將消

    2024年02月09日
    瀏覽(25)
  • Android多媒體功能開發(fā)(2)——FileProvider

    使用系統(tǒng)多媒體界面需要在我們的應(yīng)用和其他應(yīng)用之間通過Intent傳遞音頻、圖片、視頻文件的信息。隨著Android版本的升級,對應(yīng)用數(shù)據(jù)安全性方面的限制越來越多。 Android 6以后不允許應(yīng)用在外部存儲隨便創(chuàng)建目錄,只能在Android規(guī)定的應(yīng)用自己的文件目錄下創(chuàng)建目錄,該目錄

    2024年02月14日
    瀏覽(27)
  • 設(shè)計(jì)HTML5圖像和多媒體

    設(shè)計(jì)HTML5圖像和多媒體

    在網(wǎng)頁中的文本信息直觀、明了,而多媒體信息更富內(nèi)涵和視覺沖擊力。恰當(dāng)使用不同類型的多媒體可以展示個性,突出重點(diǎn),吸引用戶。在HTML5之前,需要借助插件為網(wǎng)頁添加多媒體,如Adobe Flash Player、蘋果的QuickTime等。HTML5引入原生的多媒體技術(shù),設(shè)計(jì)多媒體更簡便,用戶

    2024年02月12日
    瀏覽(26)
  • docker安裝jellyfin家庭多媒體中心

    參數(shù)說明 參數(shù) 說明 -d 以守護(hù)進(jìn)程的方式啟動 -e TZ=Asia/Shanghai 設(shè)置時(shí)區(qū)為上海 - -name jellyfin 把容器的名字設(shè)置為jellyfin - -restart=always docker重啟時(shí)候容器自動重啟 -v /opt/jellyfin/config:/config 把容器內(nèi)的/config目錄掛載到宿主機(jī)的/opt/jellyfin/config目錄 -v /opt/jellyfin/cache:/cache 把容器內(nèi)的

    2024年02月03日
    瀏覽(23)
  • 多媒體數(shù)據(jù)處理實(shí)驗(yàn)2:PCA

    多媒體數(shù)據(jù)處理實(shí)驗(yàn)2:PCA

    1. 算法描述 功能: ?利用PCA算法可以對給定的數(shù)據(jù)集進(jìn)行降維操作,使得處理后的數(shù)據(jù)不僅維數(shù)較低、能保存絕大部分信息,而且各維之間的相關(guān)性也為0(沒有冗余信息,正交)。 2. PCA的數(shù)學(xué)原理 (1) PCA的目的 ??一般而言,一個未經(jīng)處理的數(shù)據(jù)集可能存在兩個問題,一個

    2023年04月24日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包