h5嵌入視頻遇到的bug及總結

来源:http://www.cnblogs.com/shouce/archive/2016/04/08/5366461.html
-Advertisement-
Play Games

最近做的一個h5活動因為嵌入視頻而發現了好多以前從未發現的問題,在測試的時候不同系統不同版本不同環境等多多少少都出現了些問題,搞得我也是焦頭爛額的,不過好在最終問題都解決了,自己也學到了好多東西,為了方便以後用到參考,所以就記下來咯。現在有一個感悟就是當問題來臨的時候不要覺得沮喪不要抱怨而要積極面對 ...


    最近做的一個h5活動因為嵌入視頻而發現了好多以前從未發現的問題,在測試的時候不同系統不同版本不同環境等多多少少都出現了些問題,搞得我也是焦頭爛額的,不過好在最終問題都解決了,自己也學到了好多東西,為了方便以後用到參考,所以就記下來咯。現在有一個感悟就是當問題來臨的時候不要覺得沮喪不要抱怨而要積極面對,有問題就說明自己做的不夠好,而問題解決之後自己又能積累一些,又能學到一些新東西,這樣不是挺好的嗎。哈哈,下麵我就簡單記下這次h5項目中的問題。

1,webkit-playsinline playsinline 可用於防止ios用戶視頻播放自動全屏(safari是頑疾暫時沒辦法搞定),android是不自動全屏的。

2,$('.video').on('ended',function(){}) 用於檢測在視頻播放完(不管是快進還是自動播完)之後執行某些操作。 

   $('.video').trigger('play')和document.getElementById('video').play()  用於觸發播放視頻,由於autoplay在手機端為保護用戶流量而被禁用的。

   document.getElementById('video').pause() 暫停 

   document.getElementById('demo').volume+=0.1 控制音量

3,audio不支持autoplay:iphone6下safari,三星(微信 第三方瀏覽器(chrome)) 

   audio支持autoplay:iphone6下微信,三星自帶瀏覽器 

   video不支持autoplay:iphone6下safari,三星(微信 瀏覽器 第三方瀏覽器(chrome))

   video支持autoplay:iphone6下微信 

   以下方案可解決部分手機自動播放問題(當然還有好多不同手機包括不同系統版本還沒測,以後會繼續更新的)

複製代碼
 1 function autoPlay(id){
 2     var a = document.getElementById(id),
 3         play = function(){
 4             a.play();
 5             document.removeEventListener("touchstart",play, false);
 6         };
 7     a.play();
 8     document.addEventListener("WeixinJSBridgeReady", function () {//微信
 9        play();
10     }, false);
11     document.addEventListener("touchstart",play, false); //觸摸
12 }
13 autoPlay('audio');
複製代碼

5,然後就是這次遇到一個大bug,視頻開始是隱藏的,但當我點擊讓它顯示出來然後播放時,頁面是顯示出來了,但是有部分手機是只有聲音而沒有圖像,這說明video沒有顯示出來就已經播放了,後來解決方案是再show()一遍,而且而且不能給播放視頻事件加延遲,否    則在有些手機也會遇到問題,可是到現在我差不多只能猜測這樣的結果,因為實在是出現的沒有規律,以後只能繼續積累了。

   

6,還有以前很少用到unbind方法,但是這次發現你點擊一個頁面如果過快的話可能會二次觸發的,所以如果只是想觸發一次那就在觸髮結束後用unbind解綁事件。

  上面基本上就是這次項目中遇到的問題,下麵再繼續延伸一些相關知識以便下次用到:

7,停止下載視頻(由於當你暫停視頻後有的瀏覽器可能還會繼續下載視頻):

   var a = document.getElementById("");
   a.pause();
   a.src=''或 a.removeAttribute("src")

8,設定播放的時間點定位:

   var a = document.getElementById('');
   a.seekable.start(0); // 返回開始時間 (秒)
   a.seekable.end(0); // 返回結束時間 (秒)
   a.currentTime = 100; // 定位到第 100 秒播放
   a.played.end(0); // 返回已經播放的時間長度(秒)

9,設定播放範圍:

   當在網頁里嵌入視頻/音頻文件時, <audio> 或 <video> 元素允許我們提供一些額外的信息來指定播放哪一時間段。實現的方法是在媒體文件後面跟隨(“#”)格式的信息。如:
       src="video.mp4#t=10,20" (從10s播放到20s) 
       src="video.mp4#t=10" (從10s播放到完) 
       src="video.mp4#t=,10" (從開頭播放到10s)

這次先到這裡吧,下次碰到再補充吧。

      


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • atitit.atiHtmlUi web組件化方案與規範v1 1. 如何在現有html 標簽基礎上定義自己的組件1 2. 組件的構成與定義1 3. 組件的載入1 4. 組件css的載入2 5. 操作組件getVal,SetVal2 6. 組件化的本質目的並不一定是要為了可復用,而是提升可維護性。 不 ...
  • Atitit.設計模式 觸發器模式 trigger 詳解 1. 觸發器概念1 1.1. 觸發器位置 after|before|instead of1 2. 資料庫裡面的觸發器1 2.1. old和:new1 2.2. INSTEAD OF 觸發器 after|before|instead of2 3 ...
  • 談談transactionId和out_trade_no 前一篇微信JSApi支付~坑和如何填坑文章反映不錯,所以又寫了個後篇,呵呵。 每個第三方線上支付系統中都會有至少兩類訂單號,其一為支付系統的訂單號,我們稱為transactionId,其二為商戶平臺的訂單號,我們通常稱為out_trade_n ...
  • 什麼是HTML? HTML 是用來描述網頁的一種語言。 HTML 指的是超文本標記語言: HyperText Markup Language HTML 不是一種編程語言,而是一種標記語言 標記語言是一套標記標簽 (markup tag) HTML 使用標記標簽來描述網頁 HTML 文檔包含了HTML ...
  • 之前給大家分了很多的線上工具和參考文檔,這裡又為大家搜集了前端開發必備的20個線上工具和指南。新的一周,你需要計劃學習新的東西或者能夠提升你的能力。相信你會在這個列表中發現對你很有用的資料。 您可能感興趣的相關文章 Web 前端開發人員和設計師必讀文章集錦 十個擁有豐富 UI 組件的 JavaScr ...
  • 遮罩彈窗的實現: <style> body{ height:100%; margin:0;} .shadow{ position:absolute; top:0; left:0; width:100%; height:100%; background:#000; opacity:0.5; filte ...
  • 如果你打算建立自己的Web應用與AngularJS,那麼現在是時候開始了。如果這個想法嚇到你了,刪除所有的恐慌,從你的頭腦中有一些框架,AngularJS提供方便的支持。有一些預先的框架,使用框架可以如果你想建立一個Web應用程式的快速跑的是完美的你安裝的網路組件。這裡是一個名單,五個這樣的框架,可 ...
  • 關於浮動,最主要的就是解決浮動在IE6、7下要做的相容問題。例如:雙邊距bug,圖片下的空隙問題等等。後面要和定位帶來的相容問題一起總結一下好了~~~ 塊的特征 1、預設獨占一行 2、沒有寬度時,預設撐滿一排(即父元素有多寬它就是多寬) 3、支持所有css命令 行內元素的特征 1、同排可以繼續跟同類 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...