整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何利用HTML5實現音頻和視頻嵌入的方法

          篇文章主要介紹了HTML5實現音頻和視頻嵌入的方法的相關資料,原生的支持音頻和視頻,為HTML5注入了巨大的發展潛力,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

          簡介

          HTML5未出來之前,在線的音頻和視頻都是借助Flash或者第三方工具實現的,現在HTML5也支持了這方面的功能。在一個支持HTML5的瀏覽器中,不需要安裝任何插件就能播放音頻和視頻。原生的支持音頻和視頻,為HTML5注入了巨大的發展潛力。

          html實現音頻嵌入(傳統方式):這種方式雖然可以實現,但是要瀏覽器支持Flash而且并不能實現控制,所以要實現起來很麻煩。

          <object height="200" width="200" data="2_1.swf" >

          </object>

          <embed src="2_1.mp4" type="">

          那么也就是說HTML5存在一個很大的問題就是兼容性。音頻

          HTML5支持的音頻格式:



          視頻

          視頻格式:



          由上可知,HTML5貌似支持的格式有點少哈,所以當你發現用HTML5放置音頻和視頻不顯示時,應該就是格式不支持的問題。注: MP4有3種編碼,mpg4(xdiv),,mpg4(xvid),avc(h264), 只有h264才是公認的MP4標準編碼(在這也是被坑了,其他格式的只有聲音沒有圖像。)遇到這種問題,就用視頻格式轉換器,轉換一下格式就OK啦。

          音頻實現起來很簡單:這里工具條使用了瀏覽器默認的工具條。

          ?

          1

          2

          3

          <audio src="htmls/1.mp3" controls="controls" loop="loop" preload="auto" >

          你的瀏覽器不支持video元素

          </audio>



          視頻雖然也可以使用瀏覽器默認的,但無法實現私人訂制,所以從學技術的角度講,還是要學習一下自己做工具實現功能(audio也可參照此方法)。

          audioVideo.html

          <!DOCTYPE html>

          <html>

          <head>

          <meta charset="UTF-8">

          <title>網頁放置視頻</title>

          <style type="text/css">

          </style>

          <script type="text/javascript" src="js/ControlBar.js"></script>

          </head>

          <body>

          <audio src="htmls/1.mp3" controls="controls" loop="loop" preload="auto" >

          你的瀏覽器不支持video元素

          </audio>

          <video id="myPlayer" width="600" height="400" src="htmls/2_1.mp4" controls="controls" loop="loop" poster="3.jpg">

          你的瀏覽器不支持audio元素

          <!-- MP4有3種編碼,mpg4(xdiv),,mpg4(xvid),avc(h264),

          只有h264才是公認的MP4標準編碼 -->

          </video>

          <div id="progress"></div>

          <!-- 音量控制 -->

          <input id="volume" type="range" min="0" max="1" step="0.1" onchange="Volume(this)">

          <!-- 速率和時間進度的信息 -->

          <span id="rate">1</span>fps <span id="info"></span>

          <button onclick="Play(this)" id="btn1">播放</button>

          <button onclick="Fast()">快進</button>

          <button onclick="Slow()">慢進</button>

          <button onclick="Prev()">后退</button>

          <button onclick="Next()">前進</button>

          <button onclick="Muted(this)">靜音</button>

          </body>

          </html>

          顯示(html)與功能實現(js)分離,由外部導入

          ControlBar.js

          //使用腳本檢測瀏覽器的標簽支持情況

          var support = !!document.createElement("audio").canPlayType;

          if (!support) {

          alert("你的瀏覽器不支持本視頻播放");

          }

          // 定義全局的視頻對象

          var e1 = null;

          window.addEventListener("load", function() {

          e1 = document.getElementById("myPlayer");

          });

          /*前進:一分鐘 */

          function Next() {

          e1.currentTime+=10; //設置屬性currentTime,快進10s

          }

          /*后退:一分鐘 */

          function Prev() {

          e1.currentTime-=10; //設置屬性currentTime,后退10s

          }

          /*播放/暫停*/

          function Play(e) {

          if(e1.paused){

          e1.play();

          document.getElementById("btn1").innerHTML="暫停"

          }else{

          e1.pause();

          document.getElementById("btn1").innerHTML="播放"

          }

          }

          /*慢進:小于等于1時,每次都只減慢0.2的速率;大于1時,每次減1 */

          function Slow(){

          if(e1.playbackRate<=1){

          e1.playbackRate-=0.2;

          }else{

          e1.playbackRate-=1;

          }

          document.getElementById("rate").innerHTML=fps2fps(e1.playbackRate);

          }

          /*慢進:小于等于1時,每次都只減慢0.2的速率;大于1時,每次減1 */

          function Fast(){

          if(e1.playbackRate<1){

          e1.playbackRate+=0.2;

          }else{

          e1.playbackRate+=1;

          }

          document.getElementById("rate").innerHTML=fps2fps(e1.playbackRate);

          }

          function fps2fps(fps){

          if(fps<1){

          return fps.toFixed(1);

          }else{

          return fps;

          }

          }

          /*靜音*/

          function Muted(e){

          if(e1.muted){

          e1.muted=false;

          e.innerHRML="X";

          document.getElementById("volume").value=e1.volume;

          }else{

          e1.muted=true;

          e.innerHRML="x";

          document.getElementById("volume").value=0;

          }

          }

          /*調整音量*/

          function Volume(e){

          if(e1.muted==true){

          e1.muted=false;

          }

          e1.volume=e.value;

          }

          /* 進度信息:控制進度條,并顯示進度時間*/

          function Progress(){

          var p1=document.getElementById("progress");

          p1.style.width=(e1.currentTime/e1.duration)*720+"px";

          document.getElementById("info").innerHTML=s2time(e1.currentTime)+"/"+s2time(e1.duration);

          }

          function s2time(s){

          var m=parseFloat(s/60).toFixed(0);

          s=parseFloat(s%60).toFixed(0);

          return (m<10? "0"+m:m)+":"+(s<10?"0"+s:s);

          }

          /* 網頁加載完畢后,把進度處理函數添加至視頻對象的timeupdate事件中*/

          window.addEventListener("load",function(){

          e1.addEventListener("timeupdate",Progress);

          });

          /*給window.onload事件添加進度處理函數*/

          window.addEventListener("load",Progress);

          實現的功能:播放,暫停,快進,慢進,前進,后退,音量控制,進度條和時間顯示。由此可見通過Audio或Video的屬性和方法可以實現更復雜的功能。

          howler.js是現代網絡的音頻庫。它默認為Web Audio API,而向后兼容為HTML5 Audio。這使得在所有平臺上使用JavaScript進行音頻操作變得輕松可靠。




          Github

          https://github.com/goldfire/howler.js

          功能特性

          • 單個API滿足所有音頻需求
          • 默認為Web Audio API,向后兼容為HTML5 Audio
          • 處理跨環境的極端情況和錯誤
          • 支持所有編解碼器以全面支持跨瀏覽器
          • 自動緩存以提高性能
          • 單獨,分組或全局控制聲音
          • 一次播放多種聲音
          • 簡單的聲音元素定義和播放
          • 完全控制衰落,速率,搜尋,音量等
          • 輕松添加3D空間聲音或立體聲聲像
          • 模塊化-使用你想要的內容并易于擴展
          • 沒有外部依賴,只有純JavaScript
          • 壓縮后7kb大小

          瀏覽器支持情況

          • Google Chrome 7.0+
          • Internet Explorer 9.0+
          • Firefox 4.0+
          • Safari 5.1.4+
          • Mobile Safari 6.0+ (after user input)
          • Opera 12.0+
          • Microsoft Edge

          Demo

          截圖體驗不佳,可以直接看demo





          開始使用

          • 安裝
          npm install howler
          #或
          yarn add howler
          #或
          bower install howler
          //使用
          <script src="/path/to/howler.js"></script>
          <script>
              var sound = new Howl({
                src: ['sound.webm', 'sound.mp3']
              });
          </script>
          import {Howl, Howler} from 'howler';
          const {Howl, Howler} = require('howler');

          范例

          最基本播放mp3

          var sound = new Howl({
            src: ['sound.mp3']
          });
          
          sound.play();

          更多配置

          var sound = new Howl({
            src: ['sound.webm', 'sound.mp3', 'sound.wav'],
            autoplay: true,
            loop: true,
            volume: 0.5,
            onend: function() {
              console.log('Finished!');
            }
          });

          定義聲音

          var sound = new Howl({
            src: ['sounds.webm', 'sounds.mp3'],
            sprite: {
              blast: [0, 3000],
              laser: [4000, 1000],
              winner: [6000, 5000]
            }
          });
          
          // Shoot the laser!
          sound.play('laser');

          事件監聽

          var sound = new Howl({
            src: ['sound.webm', 'sound.mp3']
          });
          
          // 首次通話后清除監聽器。
          sound.once('load', function(){
            sound.play();
          });
          
          // 聲音播放完畢時觸發。
          sound.on('end', function(){
            console.log('Finished!');
          });

          控制多種聲音:

          var sound = new Howl({
            src: ['sound.webm', 'sound.mp3']
          });
          
          // 播放返回可以傳遞的唯一聲音ID
          //
          var id1 = sound.play();
          var id2 = sound.play();
          
          // Fade out the first sound and speed up the second.
          sound.fade(1, 0, 1000, id1);
          sound.rate(1.5, id2);

          ES6語法

          import {Howl, Howler} from 'howler';
          
          // 設置新的 Howl.
          const sound = new Howl({
            src: ['sound.webm', 'sound.mp3']
          });
          
          // 播放聲音
          sound.play();
          
          // 改變全局音量
          Howler.volume(0.5);

          總結

          howler.js讓Web音頻開發變得簡單可靠,是一個值得推薦的音頻庫,如果你有這方面的需求,不妨嘗試一下!

          TMl 的標簽可以分為單個標簽和成對標簽。

          單個標簽:html4 規定單個標簽要有一個 / 表示結尾, html5 則不用

          <!--單個標簽-->
          <meta>
          <!--成對標簽 -->
          <div></div>

          以下是HTMl中常用的一些標簽


          div 標簽

          div 標簽 主要用來將相關的內容組合到一塊,就像菜市場把各個蔬菜分成不同種類區分擺放是一個道理。

          div 是最常見也是比較重要的標簽,網頁布局中經常使用的一類標簽。通常布局被稱為 DIV + CSS 布局

          <div>
            div 就是一個分類的存儲箱子
          </div>


          p標簽

          p標簽表示段落, 在網頁文字中應用的比較多

          <!--段落和段落間會換行-->
          <p>第一段</p>
          <p>第二段</p>


          H-標題標簽

          h標簽分為六個

          標簽

          語義

          h1

          一級標題

          h2

          二級標題

          h3

          三級標題

          h4

          四級標題

          h5

          五級標題

          h6

          六級標題

          引用標題標簽后,字體會加粗、字號一會變大


          ul 無序標簽

          無序標簽是沒有顯示順序的列表,無序列表前面通常會有一個“小點”, 這個小點可以用type屬性控制。其中有三個展示方式(不過這種方式比較固定,不夠靈活和美觀, 已經被CSS的效果代替),如下:

          值(type屬性)

          描述

          disc

          默認值,實心圓

          circle

          空心圓

          square

          實心方框

          舉例:

          <!--ul標簽內部只能放置li標簽-->
          <!--li標簽內部可以放其他的標簽-->
          <ul type=">
              <li>無序列表元素1</li> <!--列表項-->
              <li>無序列表元素2</li>
          </ul>
          
          
          
          
          實心圓
          <ul type="disc">
            <li>西紅柿</li>
            <li>黃瓜</li>
          </ul>
          空心圓
          <ul type="circle">
            <li>西紅柿</li>
            <li>黃瓜</li>
          </ul>
          實心方框
          <ul type="square">
            <li>西紅柿</li>
            <li>黃瓜</li>
          </ul>


          ol 有序標簽

          • ol 前面的標簽是有序的,可以是數字、字母、羅馬數字等。同樣控制這些樣式使用的是type屬性。

          type屬性值

          意義

          a

          小寫英文字母編號

          A

          大寫英文字母編號

          i

          小寫羅馬數字編號

          I

          大寫羅馬數字編號

          1

          數字編號(默認)

          • 設置start屬性,表示從哪個編號開始
          • 加 reversed 表示倒敘排列


          有序列表, 從2開始
          <ol start="2">
            <li>元素1</li>
            <li>元素2</li>
          </ol>
          
          
          小寫字母表示
          <ol type="a">
            <li>元素1</li>
            <li>元素2</li>
            <li>元素3</li>
          </ol>
          
          
          倒敘
          <ol reversed>
            <li>元素1</li>
            <li>元素2</li>
            <li>元素3</li>
          </ol>


          dl 自定義列表

          dl標簽表示自定義列表

          dt表示數據項,dd表示數據定義, dd是dt標簽的解釋


          <dl>
              <dt>西紅柿</dt>
              <dd>紅、酸</dd>
              <dt>黃瓜</dt>
              <dd>綠、澀</dd>
            </dl>


          img標簽

          img 用來插入圖片,包括但不限于以下圖片格式

          圖片格式

          備注

          .jpg、.jpeg

          通常用于照片,是一種有損壓縮格式

          .png

          通常用于logo、背景,支持透明和半透明。便攜式網絡圖像

          .svg

          矢量圖片


          <!-- src(source)屬性, 圖片地址,可以為相對路徑,也可以為絕對路徑-->
          <!-- alt 如果遇到圖片無法加載的情況,網頁上會展示 alt的 值 -->
          <!-- width 和 height 表示 寬和高, 如果只設置一個, 那么另外一個就會跟著成比例縮放-->
          <img src="./images/images.jpg" alt="星期一" width="120" height="20">


          a 標簽

          用a標簽來制作超級鏈接

          <!-- href 屬性 表示 其他頁面的鏈接,支持相對路徑和絕對路徑,還可以鏈接到其它網站 -->
          <!--target 屬性表示 打開其他鏈接的方式-->
          <!-- title 屬性表示 鏈接的標題, 當鼠標移動到鏈接上,會展示出來-->
          <a href="http://www.baidu.com" target="blank" title="文字標題">百度</a>
          
          
          
          
          
          
          <!--也可以用a標簽作為錨點 錨點可以是本頁面的錨點,也可以是其他頁面的錨點-->
          <h1 id="title">頭部標題</h1>
          ... 此處省略一些代碼
          <a href="#title">返回標題</a>
          
          
          
          
          <!--下載鏈接,指向 doc, zip, zip等文件格式時,a標簽將成為自動下載鏈接-->
          <a href="./download/halou.zip">發郵件</a>
          <!-- mailto:前綴的鏈接是郵件鏈接,系統將自動打開email相關軟件-->
          <a href="mailto:halouworld@126.com">發郵件</a>
          <!-- tel: 前綴鏈接是電話鏈接,系統將自動打開撥號鍵-->
          <a href="tel:11111111111">打開撥號鍵盤</a>


          audio標簽

          audio標簽用來插入音頻標簽

          <!--添加 controls 后才會顯示 播放控件-->
          <!--常用音頻格式 mp3 和 ogg格式-->
          <!--autoplay 自動播放屬性-->
          <!--loop 屬性表示循環播放-->
          <audio controls src="./video/demo.mp3">
                 您的瀏覽器不支持 audio標簽,請升級
          </audio>
          
          
          
          
          <audio controls src="./video/demo.mp3" autoplay loop>
               您的瀏覽器不支持 audio標簽,請升級
          </audio>

          video標簽

          video 標簽用于插入一段視頻

          <!--有的視頻不能播放 ,詳見 https://blog.csdn.net/weixin_34272308/article/details/94614657 -->
          <!-- controls 顯示視頻播放控件  -->
          <!-- autoplay 自動播放 -->
          <!-- loop 循環播放 -->
          <!-- 常見的 視頻格式 mp4 ogv webm 等-->
          <video controls autoplay loop src="./video/5-4 RDB2.mp4" >
              您的瀏覽器不支持 video標簽,請升級
          </video>


          其它區塊標簽

          以前的區塊標簽只有div,現在為了更好的方便搜索引擎抓取網站,因此有了以下語義更加明確的區塊標簽

          <section>

          文檔的區域,比div語義上還要大一點

          <header>

          頁頭

          <main>

          網頁核心部分

          <footer>

          頁腳


          其他的語義標簽

          • span 標記文本標記區域,沒有特殊效果,結合CSS使用
          • b 標簽 加粗文章(可以使用CSS實現同樣效果)
          • u 加下換線文字
          • br 換行
          • i 傾斜文字(可以使用CSS實現同樣效果)
          • strong 代表特別重要的文字
          • em 需要強調的文字,有一定的傾斜,也可以用其配置CSS做表情文字
          • mark 高亮文字
          • figure 和 figcaption 。figure - 一段獨立的內容 figcaption- figure 內部元素的說明性內容


          表單

          表單用來收集信息并且可以完成和后端的數據傳輸

          表單中大致可以分為三種標簽

          • form標簽,標識表單區域, 內部的元素都可能被表單提取信息
          • input 標簽, 標識輸入、點擊等需要和用戶交互的場景
          • datalist 下拉框,支持搜索,通常和input一塊使用

          一些表單的示例

          <!--action 表示要提交到后端的網址-->
          <!--method 表示表單提交的方式,通常有 get 、 post 、put、delete等-->
          
          
          <form action="/save" meththo="post"></form>
          
          
          <!--<form> 標簽中 input 文本框 type="text" 表示文本框-->
          <!-- value 表示文本框中的值 -->
          <!--planceholder表示提示文字,在沒任何輸入值的情況下,作為提示信息-->
          <!--disabled 表示禁用-->
          <input type="text" value="123" planceholder="提示文字" disabled>
          
          
          <!---單選按鈕,name相等,表示選擇了一個,另一個就不能選擇了-->
          <!--checked 表示默認被選中-->
          <!-- value 屬性表示要提交到后端服務器的值-->
          <input type="radio" name="radio_group" checked>
          <input type="radio"  name="radio_group">
          
          
          
          
          <label>
              <input type="radio" name="sex"> 男
          </label>
          <label> 
              <input type="radio" name="sex"> 女
          </label>
          
          
          
          
          <!--html4 中的標簽 通過for 屬性 和 其他標簽的id屬性進行綁定-->
          
          
          <input type="radio" name="sex" id="nan"> 
          <label for="nan">男</label>
          
          
          <input type="radio" name="sex"   id="nv">
          <label for="nv">女</label>
          
          
          <!--復選框 type="checkbox" 同一組的的復選框,name值應該相同 ,復選框也有value值, 用于向服務器提交數據-->
          <input type="checkbox" name="hobby" value="soccer" > 足球
          <input type="checkbox" name="hobby" value="basket" > 籃球
          
          
          <!--密碼框-->
          <input type="password" placeholder="請輸入密碼">
          
          
          <!-- 下拉菜單 -->
          <select>
            <option value="alipay">支付寶</option>
            <option value="wxpay">微信支付</option>
          </select>
          
          
          <!--多文本框 rows 和  clos 分別用于設置 行數 和 列數-->
          <textarea rows="3" cols="5"></textarea>
          
          
          <!--三種按鈕 submit 提交按鈕  button 普通按鈕 可以簡寫為  <button></button> reset 按鈕 重置按鈕-->
          <input type="button" value="普通按鈕">
              <input type="reset" value="重置按鈕"> 
              <input type="submit" value="提交表單">
          
          
          
          
          <!--像 email 和 url 等格式,如果點擊提交按鈕,不符合格式,會有提示-->
          <form>
              日期空間: <input type="date">  <br/>
              時間空間: <input type="time">  <br/>
              日期時間空間 <input type="datetime-local">  <br/>
          
          
              文件:<input type="file"> <br/>  <br/>
              數字控件: <input type="number"> <br/>
              拖拽條: <input type="range"> <br/>
              搜索框: <input type="search"> <br/>
              網址控件: <input type="url"> <br/>
              郵箱控件: <input type="email" >
              <input type="submit" value="提交">
          </form>
          
          
          
          
          <!-- datalist 備選項示例 -->
          <input type="text" list="province">
          <datalist id="province">
            <option value="陜西"></option>
            <option value="山西"></option>
            <option value="河北"></option>
            <option value="山東"></option>
          </datalist>


          表格

          可以用html渲染表格

          • table 標簽表示表格
          • tr 表示行
          • td 表示單元格
          • caption 表格的標題,通常放在表格的第一行
          • th 表示列標題


          <!--表格示例-->
          <table border="1">
            <caption>我是標題</caption>
            <tr>
                <th>第一列標題</th>
                <th>第二列標題</th>
            </tr>
            <tr>
                <td>第一行第一列</td>
                <td>第一行第二列</td>
            </tr>
            <tr>
                <td>第二行第一列</td>
                <td>第二行第二列</td>
            </tr>
          </table>


          • 單元格的合并, clospan 用來設置td 或者th的列跨度 , rowspan屬性用來設置td或者th的行跨度
          <!--跨列示例-->
          <table border="1">
              <caption>我是標題</caption>
              <tr>
                  <th>第一列標題</th>
                  <th>第二列標題</th>
              </tr>
              <tr>
                  <td colspan="2">跨兩行</td>
              </tr>
              <tr>
                  <td>第二行第一列</td>
                  <td>第二行第二列</td>
              </tr>
          </table>
          
          
          <!--跨行示例-->
          <table border="1">
                  <caption>我是標題</caption>
                  <tr>
                      <th>第一列標題</th>
                      <th>第二列標題</th>
                  </tr>
                  <tr>
                      <td rowspan="2">第一行第一列</td>
                      <td>第一行第二列</td>
                  </tr>
                  <tr>
                      <td>第二行第二列</td>
                  </tr>
                  <tr>
                      <td>第三行第一列</td>
                      <td>第三行第二列</td>
                  </tr>
            </table>


          • 表格的其他標簽 , thead 定義表頭, tbody 定義表格的主題內容, tfoot 標簽定義表格底部,通常用來匯總等

          主站蜘蛛池模板: 国产精品免费一区二区三区四区| 日韩一区二区a片免费观看| 无码日韩精品一区二区免费暖暖| 中字幕一区二区三区乱码| 国产在线观看精品一区二区三区91 | 2018高清国产一区二区三区| 激情综合一区二区三区| 日韩精品一区二区三区视频| 在线不卡一区二区三区日韩| 精品欧洲av无码一区二区| 久久se精品一区精品二区| 久久AAAA片一区二区| 久久一区二区明星换脸| 久久久久人妻精品一区二区三区| 久久无码人妻一区二区三区午夜 | 亚洲欧洲一区二区三区| 在线播放偷拍一区精品| 精品国产一区二区三区久久久狼| 成人一区二区免费视频| 中文字幕乱码一区二区免费| 国产美女精品一区二区三区| 国产拳头交一区二区| 亚洲福利视频一区二区| 国产人妖视频一区二区| 色噜噜狠狠一区二区三区果冻 | 一区二区免费视频| 亚洲AV无码一区二区三区网址| 福利国产微拍广场一区视频在线| 奇米精品视频一区二区三区| 国产精品高清一区二区三区不卡| 婷婷亚洲综合一区二区| 在线精品国产一区二区三区| 国内精品视频一区二区三区 | 中文字幕一区二区三区在线观看| 久久精品一区二区三区中文字幕| 亚洲a∨无码一区二区| 波多野结衣中文一区二区免费| 中文字幕日韩一区二区不卡| 无码丰满熟妇浪潮一区二区AV| 精品久久一区二区三区| 99偷拍视频精品一区二区|