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

基于MSE實(shí)現(xiàn)web前端視頻預(yù)加載

這篇具有很好參考價(jià)值的文章主要介紹了基于MSE實(shí)現(xiàn)web前端視頻預(yù)加載。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介

媒體源擴(kuò)展 API(MSE) 提供了實(shí)現(xiàn)無插件且基于 Web 的流媒體的功能。使用 MSE,媒體流能夠通過 創(chuàng)建,并且能通過使用 和 元素進(jìn)行播放。

實(shí)現(xiàn)

正如上面所說,MSE 讓我們可以通過 JS 創(chuàng)建媒體資源,使用起來也十分方便:

//創(chuàng)建了一個(gè)新的MediaSource對(duì)象。
//MediaSource對(duì)象表示媒體數(shù)據(jù)源,可以動(dòng)態(tài)地將數(shù)據(jù)添加到此源中
const mediaSource = new MediaSource();


const video = document.querySelector('video');
// 與窗口中的 document 綁定
video.src = URL.createObjectURL(mediaSource);

媒體資源對(duì)象創(chuàng)建完畢,接下來就是喂給它視頻數(shù)據(jù)(片段),代碼看上去就像是:

//sourceopen事件:媒體源已經(jīng)與HTML媒體元素關(guān)聯(lián)并且準(zhǔn)備好接收媒體數(shù)據(jù)時(shí)
mediaSource.addEventListener('sourceopen', () => {
  // MIME類型字符串,指定了將要添加到MediaSource對(duì)象中的媒體流格式
  const mime = 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"';
  //創(chuàng)建一個(gè)新的源緩沖區(qū)用于保存即將播放的媒體數(shù)據(jù)。
  const sourceBuffer = mediaSource.addSourceBuffer(mime);

  // 視頻數(shù)據(jù)
  const data = new ArrayBuffer([...]); 
  //視頻內(nèi)容二進(jìn)制數(shù)據(jù)追加到剛才創(chuàng)建好的源緩沖區(qū)
  sourceBuffer.appendBuffer(data);
});

此時(shí),視頻就可以正常播放了。要想做到流式播放,只需要不停的調(diào)用 appendBuffer 喂音視頻數(shù)據(jù)就行了
但不禁有疑問, ‘video/mp4; codecs=“avc1.42E01E, mp4a.40.2”’ 這段字符串什么意思?怎么來的?

這段字符串描述了視頻的相關(guān)參數(shù),如封裝格式、音/視頻編碼格式以及其他重要信息。

詳細(xì)介紹

● 前半部分的 video/mp4 表示這是 mp4 格式的視頻;
● 后半部分的 codecs 描述了視頻的編碼信息,它是由一個(gè)或多個(gè)由 , 分隔的值組成,其中每個(gè)值又由一個(gè)或多個(gè)由 . 分割的元素組成:
○ avc1 表示視頻是 AVC(即H264)編碼;
○ 42E01E 由(16進(jìn)制表示的)三個(gè)字節(jié)構(gòu)成,描述了視頻的相關(guān)信息:
■ 0x42 (AVCProfileIndication)表示視頻的Profile,常見的有 Baseline/Extended/Main/High profile等;
■ 0xE0 (profile_compatibility)表示編碼級(jí)別的約束條件;
■ 0x1E (AVCLevlIndication)表示H264的level,表示最大支持的分辨率、幀率、碼率等;
○ mp4a 表示某種 MPEG-4 音頻;
○ 40 是由MP4注冊(cè)機(jī)構(gòu)指定的ObjectTypeIndication(OTI),0x40 對(duì)應(yīng) Audio ISO/IEC 14496-3 (d)標(biāo)準(zhǔn);
○ 2 表示某種音頻OTI,mp4a.40.2 表示 AAC LC。

前端有什么方法直接取到視頻的 MIME TYPE 呢?

對(duì)于 mp4 格式的可以使用: mp4box ,獲取方式如下:

import MP4Box from 'mp4box';

export function getMimeType (buffer) {
  return new Promise<string>((resolve, reject) => 
    //創(chuàng)建了一個(gè)新的 MP4Box 文件對(duì)象實(shí)例。
    const mp4boxfile = MP4Box.createFile();
  	//當(dāng) mp4boxfile 實(shí)例準(zhǔn)備好后
  	//觸發(fā) onReady 事件,并調(diào)用此處指定的回調(diào)函數(shù)
  	//回調(diào)接收到文件信息作為參數(shù),
  	//并把其中 MIME 類型信息作為 Promise 的成功結(jié)果返回。
    mp4boxfile.onReady = (info) => resolve(info.mime);
    mp4boxfile.onError = () => reject();

    (buffer).fileStart = 0;
    mp4boxfile.appendBuffer(buffer);
  });
}

實(shí)現(xiàn)流程圖
基于MSE實(shí)現(xiàn)web前端視頻預(yù)加載,前端,音視頻

MSE在其中扮演了buffer流的管理及橋接工作,因?yàn)镸SE支持的是fmp4格式,所以對(duì)于mp4文件我們需要在加載隊(duì)列之后進(jìn)行一個(gè)軟編解碼。綜上所述,實(shí)現(xiàn)流程如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-791159.html

  1. 編寫加載器loader,請(qǐng)求 mp4 視頻數(shù)據(jù)。
  2. 編寫解析器將 mp4 視頻數(shù)據(jù)進(jìn)行流處理等 。
  3. 將解復(fù)用的視頻數(shù)據(jù)轉(zhuǎn)成 fmp4 格式并傳遞給 MediaSource。
  4. 通過createObjectURL將MediaSource與 video 進(jìn)行關(guān)聯(lián),完成播放。
    5.基于MSE實(shí)現(xiàn)web前端視頻預(yù)加載,前端,音視頻

到了這里,關(guān)于基于MSE實(shí)現(xiàn)web前端視頻預(yù)加載的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 瀏覽器自動(dòng)播放音視頻-前端實(shí)現(xiàn)方案

    瀏覽器自動(dòng)播放音視頻-前端實(shí)現(xiàn)方案

    目錄 前言 瀏覽器自動(dòng)播放策略 策略詳情: 實(shí)現(xiàn)方案? 方案1: 互動(dòng)后播放 方案2: 互動(dòng)后出聲 總結(jié) 在開發(fā)中可能有遇到這樣的需求,當(dāng)用戶打開頁面后,需要自動(dòng)播放視頻或音頻,按理說那就打開頁面時(shí)play()一下不就搞定了嗎,但實(shí)際情況很明顯不是,不然也沒得這篇文

    2024年02月04日
    瀏覽(24)
  • 【聲網(wǎng)】實(shí)現(xiàn)web端與uniapp微信小程序端音視頻互動(dòng)

    【聲網(wǎng)】實(shí)現(xiàn)web端與uniapp微信小程序端音視頻互動(dòng)

    利用聲網(wǎng)實(shí)現(xiàn)音視頻互動(dòng) 注冊(cè)聲網(wǎng)賬號(hào) 進(jìn)入Console 成功登錄控制臺(tái)后,按照以下步驟創(chuàng)建一個(gè)聲網(wǎng)項(xiàng)目: 展開控制臺(tái)左上角下拉框,點(diǎn)擊 創(chuàng)建項(xiàng)目 按鈕。 在彈出的對(duì)話框內(nèi),依次選擇 項(xiàng)目類型 ,輸入 項(xiàng)目名稱 ,選擇 場(chǎng)景標(biāo)簽 和 鑒權(quán)機(jī)制 。其中鑒權(quán)機(jī)制推薦選擇 安全

    2024年04月27日
    瀏覽(53)
  • FFMpeg-3、基于QT實(shí)現(xiàn)音視頻播放顯示

    FFMpeg-3、基于QT實(shí)現(xiàn)音視頻播放顯示

    1、音視頻播放的基礎(chǔ)知識(shí) 內(nèi)容來自雷神博客 1、在Windows平臺(tái)下的視頻播放技術(shù)主要有以下三種:GDI,Direct3D和OpenGL;音頻播放技術(shù)主要是DirectSound。 SDL本身并不具有播放顯示的功能,它只是封裝了底層播放顯示的代碼 記錄三種視頻顯示技術(shù):GDI,Direct3D,OpenGL。其中Direct3D包

    2024年02月03日
    瀏覽(36)
  • 【復(fù)】基于 WebRTC 的音視頻在線監(jiān)考模塊的設(shè)計(jì)與實(shí)現(xiàn)(下)

    【復(fù)】基于 WebRTC 的音視頻在線監(jiān)考模塊的設(shè)計(jì)與實(shí)現(xiàn)(下)

    在上一篇博文 【復(fù)】基于 WebRTC 的音視頻在線監(jiān)考模塊的設(shè)計(jì)與實(shí)現(xiàn)(上) 中,主要介紹了關(guān)于 WebRTC 的基本理論,那么這篇文章我們將進(jìn)入實(shí)戰(zhàn)階段,通過 WebRTC 框架,去實(shí)現(xiàn) P2P 通話,以及延伸到一對(duì)多的音視頻通話,從而實(shí)現(xiàn)在線監(jiān)考功能; ? 在開發(fā) Web 時(shí),WebRTC 標(biāo)準(zhǔn)

    2024年02月01日
    瀏覽(29)
  • 《保姆級(jí)教程》基于Agora SDK實(shí)現(xiàn)音視頻通話及屏幕共享

    《保姆級(jí)教程》基于Agora SDK實(shí)現(xiàn)音視頻通話及屏幕共享

    ??作者簡(jiǎn)介: 小曾同學(xué).com,一個(gè)致力于測(cè)試開發(fā)的博主??,主要職責(zé):測(cè)試開發(fā)、CI/CD 如果文章知識(shí)點(diǎn)有錯(cuò)誤的地方,還請(qǐng)大家指正,讓我們一起學(xué)習(xí),一起進(jìn)步。?? 座右銘:不想當(dāng)開發(fā)的測(cè)試,不是一個(gè)好測(cè)試??。 如果感覺博主的文章還不錯(cuò)的話,還請(qǐng)點(diǎn)贊、收藏哦

    2024年02月12日
    瀏覽(21)
  • 基于webrtc的音視頻通話,實(shí)現(xiàn)相機(jī)流識(shí)別人臉的功能

    這幾天研究了一下webRTC的基礎(chǔ)能力,在此基礎(chǔ)之上能實(shí)現(xiàn)的視頻通話,互動(dòng)等更多實(shí)用功能。項(xiàng)目中使用的是阿里的rtc,我研究的是聲網(wǎng)的是否符合功能,后續(xù)會(huì)總結(jié)和記錄一下應(yīng)用到的幾個(gè)功能實(shí)現(xiàn)方法。 今天要記錄的功能是項(xiàng)目流識(shí)別人臉的功能,其實(shí)類似功能很常見了

    2024年04月28日
    瀏覽(27)
  • Unity Metaverse(八)、RTC Engine 基于Agora聲網(wǎng)SDK實(shí)現(xiàn)音視頻通話

    Unity Metaverse(八)、RTC Engine 基于Agora聲網(wǎng)SDK實(shí)現(xiàn)音視頻通話

    本文介紹如何在Unity中接入聲網(wǎng)SDK,它可以應(yīng)用的場(chǎng)景有許多,例如直播、電商、游戲、社交等,音視頻通話是其實(shí)時(shí)互動(dòng)的基礎(chǔ)能力。 如下圖所示,可以在官網(wǎng)中選擇Unity SDK進(jìn)行下載,也可以到 Unity Asset Store 資源商店中搜索 Agora SDK 進(jìn)行下載導(dǎo)入。 在官網(wǎng)中前往 Console 控制

    2024年02月09日
    瀏覽(27)
  • WebCodecs 開啟 Web 音視頻新篇章

    WebCodecs 開啟 Web 音視頻新篇章

    本期作者 WebCodecs 是什么 WebCodecs 是一個(gè) Web 規(guī)范,21 年 9 月份在 Chrome 94 中實(shí)現(xiàn) WebCodecs 提供訪問編解碼能力的接口,可精細(xì)控制音視頻數(shù)據(jù) ?Web 音視頻 API 存在什么問題 音視頻技術(shù)在 Web 平臺(tái)上的應(yīng)用非常廣泛,已有許多 Web API? 間接調(diào)用了編解碼器 來實(shí)現(xiàn)特定功能: 視頻

    2024年01月15日
    瀏覽(48)
  • Hololens2遠(yuǎn)程音視頻通話與AR遠(yuǎn)程空間標(biāo)注,基于OpenXR+MRTK3+WebRTC實(shí)現(xiàn)
  • 前端基礎(chǔ)(三十六):讀取本地音視頻設(shè)備并進(jìn)行播放

    前端基礎(chǔ)(三十六):讀取本地音視頻設(shè)備并進(jìn)行播放

    請(qǐng)求媒體輸入和輸出設(shè)備的列表,例如麥克風(fēng),攝像機(jī),耳機(jī)設(shè)備等 會(huì)提示用戶給予使用媒體輸入的許可,媒體輸入會(huì)產(chǎn)生一個(gè)MediaStream,里面包含了請(qǐng)求的媒體類型的軌道。此流可以包含一個(gè)視頻軌道(來自硬件或者虛擬視頻源,比如相機(jī)、視頻采集設(shè)備和屏幕共享服務(wù)等

    2024年02月15日
    瀏覽(32)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包