真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

html5播放音頻,html5音頻自動播放

如何用HTML5向網(wǎng)頁中插入音頻

工具/材料

超過十余年行業(yè)經(jīng)驗,技術(shù)領先,服務至上的經(jīng)營模式,全靠網(wǎng)絡和口碑獲得客戶,為自己降低成本,也就是為客戶降低成本。到目前業(yè)務范圍包括了:成都網(wǎng)站設計、做網(wǎng)站,成都網(wǎng)站推廣,成都網(wǎng)站優(yōu)化,整體網(wǎng)絡托管,微信小程序,微信開發(fā),成都app軟件開發(fā)公司,同時也可以讓客戶的網(wǎng)站和網(wǎng)絡營銷和我們一樣獲得訂單和生意!

Sublime Text

01

打開Sublime Text工具,準備好如下圖所示的目錄結(jié)構(gòu),目錄里面包括要插入的音頻文件和一個html文件。

02

打開HTML文件,新建一個空的HTML5文檔結(jié)構(gòu),如下圖所示,注意編碼一定設置為UTF-8。

03

接下來在body標簽中插入audio元素,audio元素里面通過source引入音頻文件,如下圖所示,注意文件的類型要寫對。

04

運行編寫好的頁面程序,你會在網(wǎng)頁中看到如下圖所示的音頻播放器,我們點擊播放按鈕就會自動播放音頻。

05

當然有很多的老版本的瀏覽器并不支持audio元素,這個時候我們可以在audio里面添加一個提示,當瀏覽器不支持audio元素的時候就會顯示這個提示。

06

如果想進入播放頁面就立即自動播放音頻內(nèi)容,那么需要在audio中添加一個controls屬性,如下圖所示。

07

最后,我列舉了一下當前主流瀏覽器對HTML5里面audio元素的支持情況,大家可以做一下參考。

HTML5怎么實現(xiàn)錄音和播放功能

span style="white-space:pre" /spanaudio controls autoplay/audio

input type="button" value="開始錄音" onclick="startRecording()"/

input type="button" value="獲取錄音" onclick="obtainRecord()"/

input type="button" value="停止錄音" onclick="stopRecord()"/

input type="button" value="播放錄音" onclick="playRecord()"/

video id="video1" width="320px" height="240px" controls autoplay /video

video id="video2" width="320px" height="240px" controls autoplay /video

canvas id="canvas1" width="320" height="240"/canvas

input type="button" value="拍攝" onclick="scamera()"/

input type="button" value="播放視頻" onclick="playVideo()"/

js文件:

[javascript] view plain copy(function (window) {

//兼容

window.URL = window.URL || window.webkitURL;

navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

var HZRecorder = function (stream, config) {

config = config || {};

config.sampleBits = config.sampleBits || 8; //采樣數(shù)位 8, 16

config.sampleRate = config.sampleRate || (44100 / 6); //采樣率(1/6 44100)

//創(chuàng)建一個音頻環(huán)境對象

audioContext = window.AudioContext || window.webkitAudioContext;

var context = new audioContext();

//將聲音輸入這個對像

var audioInput = context.createMediaStreamSource(stream);

//設置音量節(jié)點

var volume = context.createGain();

audioInput.connect(volume);

//創(chuàng)建緩存,用來緩存聲音

var bufferSize = 4096;

// 創(chuàng)建聲音的緩存節(jié)點,createScriptProcessor方法的

// 第二個和第三個參數(shù)指的是輸入和輸出都是雙聲道。

var recorder = context.createScriptProcessor(bufferSize, 2, 2);

var audioData = {

size: 0 //錄音文件長度

, buffer: [] //錄音緩存

, inputSampleRate: context.sampleRate //輸入采樣率

, inputSampleBits: 16 //輸入采樣數(shù)位 8, 16

, outputSampleRate: config.sampleRate //輸出采樣率

, oututSampleBits: config.sampleBits //輸出采樣數(shù)位 8, 16

, input: function (data) {

this.buffer.push(new Float32Array(data));

this.size += data.length;

}

, compress: function () { //合并壓縮

//合并

var data = new Float32Array(this.size);

var offset = 0;

for (var i = 0; i this.buffer.length; i++) {

data.set(this.buffer[i], offset);

offset += this.buffer[i].length;

}

//壓縮

var compression = parseInt(this.inputSampleRate / this.outputSampleRate);

var length = data.length / compression;

var result = new Float32Array(length);

var index = 0, j = 0;

while (index length) {

result[index] = data[j];

j += compression;

index++;

}

return result;

}

, encodeWAV: function () {

var sampleRate = Math.min(this.inputSampleRate, this.outputSampleRate);

var sampleBits = Math.min(this.inputSampleBits, this.oututSampleBits);

var bytes = this.compress();

var dataLength = bytes.length * (sampleBits / 8);

var buffer = new ArrayBuffer(44 + dataLength);

var data = new DataView(buffer);

var channelCount = 1;//單聲道

var offset = 0;

var writeString = function (str) {

for (var i = 0; i str.length; i++) {

data.setUint8(offset + i, str.charCodeAt(i));

}

};

// 資源交換文件標識符

writeString('RIFF'); offset += 4;

// 下個地址開始到文件尾總字節(jié)數(shù),即文件大小-8

data.setUint32(offset, 36 + dataLength, true); offset += 4;

// WAV文件標志

writeString('WAVE'); offset += 4;

// 波形格式標志

writeString('fmt '); offset += 4;

// 過濾字節(jié),一般為 0x10 = 16

data.setUint32(offset, 16, true); offset += 4;

// 格式類別 (PCM形式采樣數(shù)據(jù))

data.setUint16(offset, 1, true); offset += 2;

// 通道數(shù)

data.setUint16(offset, channelCount, true); offset += 2;

// 采樣率,每秒樣本數(shù),表示每個通道的播放速度

data.setUint32(offset, sampleRate, true); offset += 4;

// 波形數(shù)據(jù)傳輸率 (每秒平均字節(jié)數(shù)) 單聲道×每秒數(shù)據(jù)位數(shù)×每樣本數(shù)據(jù)位/8

data.setUint32(offset, channelCount * sampleRate * (sampleBits / 8), true); offset += 4;

// 快數(shù)據(jù)調(diào)整數(shù) 采樣一次占用字節(jié)數(shù) 單聲道×每樣本的數(shù)據(jù)位數(shù)/8

data.setUint16(offset, channelCount * (sampleBits / 8), true); offset += 2;

// 每樣本數(shù)據(jù)位數(shù)

data.setUint16(offset, sampleBits, true); offset += 2;

// 數(shù)據(jù)標識符

writeString('data'); offset += 4;

// 采樣數(shù)據(jù)總數(shù),即數(shù)據(jù)總大小-44

data.setUint32(offset, dataLength, true); offset += 4;

// 寫入采樣數(shù)據(jù)

if (sampleBits === 8) {

for (var i = 0; i bytes.length; i++, offset++) {

var s = Math.max(-1, Math.min(1, bytes[i]));

var val = s 0 ? s * 0x8000 : s * 0x7FFF;

val = parseInt(255 / (65535 / (val + 32768)));

data.setInt8(offset, val, true);

}

} else {

for (var i = 0; i bytes.length; i++, offset += 2) {

var s = Math.max(-1, Math.min(1, bytes[i]));

data.setInt16(offset, s 0 ? s * 0x8000 : s * 0x7FFF, true);

}

}

return new Blob([data], { type: 'audio/wav' });

}

};

//開始錄音

this.start = function () {

audioInput.connect(recorder);

recorder.connect(context.destination);

};

//停止

this.stop = function () {

recorder.disconnect();

};

//獲取音頻文件

this.getBlob = function () {

this.stop();

return audioData.encodeWAV();

};

//回放

this.play = function (audio) {

audio.src = window.URL.createObjectURL(this.getBlob());

};

//上傳

this.upload = function (url, callback) {

var fd = new FormData();

fd.append('audioData', this.getBlob());

var xhr = new XMLHttpRequest();

if (callback) {

xhr.upload.addEventListener('progress', function (e) {

callback('uploading', e);

}, false);

xhr.addEventListener('load', function (e) {

callback('ok', e);

}, false);

xhr.addEventListener('error', function (e) {

callback('error', e);

}, false);

xhr.addEventListener('abort', function (e) {

callback('cancel', e);

}, false);

}

xhr.open('POST', url);

xhr.send(fd);

};

//音頻采集

recorder.onaudioprocess = function (e) {

audioData.input(e.inputBuffer.getChannelData(0));

//record(e.inputBuffer.getChannelData(0));

};

};

//拋出異常

HZRecorder.throwError = function (message) {

throw new function () { this.toString = function () { return message; };};

};

//是否支持錄音

HZRecorder.canRecording = (navigator.getUserMedia != null);

//獲取錄音機

HZRecorder.get = function (callback, config) {

if (callback) {

if (navigator.getUserMedia) {

navigator.getUserMedia(

{ audio: true } //只啟用音頻

, function (stream) {

var rec = new HZRecorder(stream, config);

callback(rec);

}

, function (error) {

switch (error.code || error.name) {

case 'PERMISSION_DENIED':

case 'PermissionDeniedError':

HZRecorder.throwError('用戶拒絕提供信息。');

break;

case 'NOT_SU

為什么HTML5不需要任何瀏覽器插件就可以播放音視頻?原理是什么?

因為瀏覽器直接支持啊,也就是說瀏覽器直接把你所謂的瀏覽器插件作為其內(nèi)置的功能,就好比雜牌軍直接被收編為正規(guī)軍,瀏覽器都直接能播放音視頻了,那還要什么插件???

HTML5中audio標簽的使用

HTML5 中的新元素標簽

src:音頻文件路徑。

autobuffer:設置是否在頁面加載時自動緩沖音頻。

autoplay:設置音頻是否自動播放。

loop:設置音頻是否要循環(huán)播放。

controls:屬性供添加播放、暫停和音量控件。

這些屬性和video元素標簽的屬性很類似

常用的控制函數(shù):

1.load():加載音頻、視頻軟件

2.play():加載并播放音頻、視頻文件或重新播放暫停的的音頻、視頻

3.pause():暫停出于播放狀態(tài)的音頻、視頻文件

4.canPlayType(obj):測試是否支持給定的Mini類型的文件

可腳本控制的屬性值:

1.autoplay:自動播放已經(jīng)加載的的媒體文件

2.loop為true:的時候則設定為自動播放

3.currentTime:以s為單位返回從開始播放到目前所花的時間

4.controls:顯示或者隱藏用戶控制界面

5.volume:音量值,從0.0至1.0之間

6.muted:設置是否靜音

7.autobuffer:是否進行緩沖加載

audioTracks 返回表示可用音頻軌道的 AudioTrackList 對象。

autoplay 設置或返回是否在就緒(加載完成)后隨即播放音頻。

buffered 返回表示音頻已緩沖部分的 TimeRanges 對象。

controller 返回表示音頻當前媒體控制器的 MediaController 對象。

controls 設置或返回音頻是否應該顯示控件(比如播放/暫停等)。

crossOrigin 設置或返回音頻的 CORS 設置。

currentSrc 返回當前音頻的 URL。

currentTime 設置或返回音頻中的當前播放位置(以秒計)。

defaultMuted 設置或返回音頻默認是否靜音。

defaultPlaybackRate 設置或返回音頻的默認播放速度。

duration 返回音頻的長度(以秒計)。

ended 返回音頻的播放是否已結(jié)束。

error 返回表示音頻錯誤狀態(tài)的 MediaError 對象。

loop 設置或返回音頻是否應在結(jié)束時再次播放。

mediaGroup 設置或返回音頻所屬媒介組合的名稱。

muted 設置或返回是否關閉聲音。

networkState 返回音頻的當前網(wǎng)絡狀態(tài)。

paused 設置或返回音頻是否暫停。

playbackRate 設置或返回音頻播放的速度。

played 返回表示音頻已播放部分的 TimeRanges 對象。

preload 設置或返回音頻的 preload 屬性的值。

readyState 返回音頻當前的就緒狀態(tài)。

seekable 返回表示音頻可尋址部分的 TimeRanges 對象。

seeking 返回用戶當前是否正在音頻中進行查找。

src 設置或返回音頻的 src 屬性的值。

textTracks 返回表示可用文本軌道的 TextTrackList 對象。

volume 設置或返回音頻的音量。

方法 描述

addTextTrack() 向音頻添加新的文本軌道。

canPlayType() 檢查瀏覽器是否能夠播放指定的音頻類型。

fastSeek() 在音頻播放器中指定播放時間。

getStartDate() 返回新的 Date 對象,表示當前時間線偏移量。

load() 重新加載音頻元素。

play() 開始播放音頻。

pause() 暫停當前播放的音頻。


文章題目:html5播放音頻,html5音頻自動播放
標題網(wǎng)址:http://weahome.cn/article/dsdeodo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部