第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從Node到瀏覽器的不同方式的優(yōu)缺點(diǎn),提供和播放wav音頻文件

從Node到瀏覽器的不同方式的優(yōu)缺點(diǎn),提供和播放wav音頻文件

皈依舞 2022-08-18 10:08:27
正如我所看到的,我們可以將本機(jī)HTMLAudioElement與,從Node提供文件或流.js并讓本機(jī)播放器使用它并產(chǎn)生聲音。src我們還可以將其拆分為塊(HLS / RTMP),并與JavaScript播放器一起使用它們,該播放器可以像hls.js或mediaelement一樣使用它。這將有助于長音頻文件(可能很重),因此我們可以在擁有所有內(nèi)容之前開始播放。我還看到了一個(gè)使用websockets的有趣項(xiàng)目。還有哪些其他方法?每種方法的優(yōu)缺點(diǎn)是什么?這些是否屬于能夠加密所提供內(nèi)容的“優(yōu)點(diǎn)”?
查看完整描述

2 回答

?
慕桂英4014372

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊

加密音頻/視頻可以由服務(wù)器手動(dòng)完成。理想情況下,使用流。


const crypto = require("crypto")

const fs = require("fs")


const browser = getClientConnectionSomehow()


const encryptor = crypto.createCipheriv("aes256", "32 character long string", Buffer.alloc(16))


fs.createReadStream("path/to/video.mp4").pipe(encryptor).pipe(browser)

然后,您可以在大流中將其發(fā)送到客戶端。另一種可能更好的方法是讓客戶端建立一個(gè)WebSocket,客戶端請(qǐng)求視頻塊,服務(wù)器使用將所選部分向下管道傳輸?shù)娇蛻舳?。writeStreams


我用1分鐘的視頻和本地主機(jī)在瀏覽器上運(yùn)行了一個(gè)快速測(cè)試。它只是將視頻通過管道傳輸?shù)娇蛻舳?,沒有限制,并且運(yùn)行良好。我沒有實(shí)現(xiàn)限制,但在偽代碼術(shù)語中,我這樣做的方式是:


客戶:


<video src="/path/to/video">


</video>

let video = document.getElement("video")

WebSocket.send((currentVideoBuffer - video.currentTime) >= 10)

// say, we wait until there are 10 seconds left in the video to load the next chunk.

服務(wù)器:


http.createServer((req,res) => {

    let stream = fs.createReadStream("path/to/video.mp4")

    WebSocket.on((shouldSend) => {

        if (shouldSend) {

            res.write(stream.read(500000)

            // just a dummy number of bytes. change as needed.

        }

    })

})

這嚴(yán)重簡化了它的實(shí)際工作方式。你需要對(duì)偽代碼進(jìn)行大量改進(jìn),然后才能真正成為一個(gè)可行的選擇。但對(duì)于直播音頻/視頻,這基本上描述了所有后端需求。如果您需要加密,我建議使用此選項(xiàng),但我不知道瀏覽器如何解密它,然后將其塞入音頻元素中。


從 nodejs 流式傳輸?shù)娇蛻舳讼喈?dāng)簡單(使用 express,只需掛接到來自 FS 的讀取函數(shù)即可)。res.writereadStream


Node是為流媒體內(nèi)容而構(gòu)建的,我建議研究他們的原生工具。我沒有研究過你鏈接的庫,但它們似乎是可行的選擇。


我認(rèn)為這一切都取決于你想要多少工具。使用您自己的自定義實(shí)現(xiàn),您可以添加和刪除功能以制作您夢(mèng)寐以求的視頻/音頻播放器。(我相信有一種方法可以像Opus流一樣,降低某些流的質(zhì)量,使某些流花費(fèi)更少的kb / s)。


我認(rèn)為使用預(yù)制庫最適合起步,但是如果您的項(xiàng)目圍繞此流,或者您需要像AES-256之類的東西或任何非正統(tǒng)的東西,我建議您自己實(shí)現(xiàn)。正如我上面所演示的,它很復(fù)雜,但不太難,這要?dú)w功于nodejs。


編輯


我找到了這個(gè)NodeJS項(xiàng)目。它是一個(gè)視頻解析器,可讓您將視頻拆分為緩沖區(qū)塊(并獲取緩沖區(qū)的長度!這應(yīng)該可以幫助您拆分和流式傳輸緩沖區(qū)。


https://github.com/gkozlenko/node-video-lib


查看完整回答
反對(duì) 回復(fù) 2022-08-18
?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

我在一個(gè)音樂流媒體平臺(tái)上工作。我們必須提供多達(dá)1-2 GB的音頻文件作為流。所以我做了這個(gè)。使用ffmpeg庫來格式化上傳的音頻。ffmpeg 應(yīng)該安裝在您的計(jì)算機(jī)上。

require('child_process').exec(`ffmpeg -y -i ${dir_str} -codec copy -bsf:v h264_mp4toannexb -map 0 -f segment -segment_time 10 -segment_format mpegts -segment_list "${m3u8_path}/${soundId}.m3u8" -segment_list_type m3u8 "${m3u8_path}/ts%d.ts"`)

我認(rèn)為這有好處。


查看完整回答
反對(duì) 回復(fù) 2022-08-18
  • 2 回答
  • 0 關(guān)注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)