摘要:參考鏈接禁止自動播放后,有什么比較好的方法實現的自動播放嗎微信自動播放視頻可交互,設置層級,無控制條,非視頻下安裝系統安裝使用音視頻播放和常見的坑處理在微信和瀏覽器中不全屏播放解決
1、問題的提出
某一天接了個需求,需要在手機的H5頁面內加入視頻,我開開心心做完,準備交付的時候,問題來了,PM想要用戶一進入頁面,視頻就開始播放,不需要用戶手動點擊。
2、嘗試解決 加autoplay“視頻自動播放”這個需求是ok的,那我就在video標簽上加個autoplay屬性嘛,在PC端瀏覽器里面試了一下,運行流暢,沒有遇到什么問題,但是放在手機瀏覽器里面打開,就跟沒設置autoplay是一樣的。
監聽canplay那不行的話,我在頁面加載完成的時候,監聽video的canplay,然后執行play(),應該可以運行了吧?然而放到手機里一看,還是不行。
var video = document.querySelector("#video"); video.addEventListener("canplay", function () { video.play(); })3、思考
問題來了,加autoplay不行,可以理解,可能手機瀏覽器不支持這個屬性吧,但是我監聽視頻加載完成,手動去play(),這是程序常規方法,為什么也不行?
我嘗試在監聽回調里面加了個alert,發現沒有彈出框。
所以我很長一段時間認為,手機瀏覽器無法自動播放視頻,是因為內存大小的限制,導致無法監聽video的加載完成。
昨天在segment上游蕩,發現了原來現在的手機瀏覽器是不允許網頁中視頻自動播放的,只有與用戶進行了一次交互動作,才可以播放視頻。(音頻同理,這里就不重復提)
我嘗試了一下,在頁面上加一個彈框,用戶點擊了彈框之后(相當于一次交互完成),開始播放視頻,發現是可以播放的,部分代碼如下。
視頻自動播放 頁面內有自動播放視頻 請注意流量
所以解決視頻自動播放的一般做法是,在頁面加載的時候彈框與用戶產生交互,然后才能開始自動播放(如此看來,手機瀏覽器是真的很重視用戶的流量了。)
存在的問題按照上面的方法,只要想要在手機端頁面中實現 進入頁面,視頻立即自動播放,就必須要借助一個額外的動作去引導與用戶發生一次交互,那豈不是很丑,有沒有辦法是可以不借助彈框呢?答案是 有的。
方案2 使用jsmpeg.jsjsmpeg是一款視頻解碼器,具體怎么用,可以百度相關文檔,實話說我對此也不熟悉,第一次聽見的時候是聽說jsmpeg可以實現網頁端的視頻直播功能,這一次用來解決視頻自動播放的需求也是借鑒別人的想法。
關鍵代碼如下:(前提:項目中已經引入了jsmpeg.min.js)
頁面加載完成的時候執行下面的js代碼: var canvas = document.querySelector("#canvas"); // 注意這里需要將video.mp4轉換成ts格式的文件 才能生效 var player = new JSMpeg.Player("video.ts", { canvas: canvas, loop: false, autoplay: false, audio: true }); player.audioOut.unlock(this.onUnlocked); player.play(); // onUnlocked方法 function onUnlocked() { player.volume = 1; }
這樣即使不跟用戶產生交互 視頻也能自動播放了,
注意點
1.demo必須放在服務器上面跑才能正常加載ts文件,如果是在本地的話,不能直接拖進瀏覽器運行,需要起個本地服務器
2.ts文件編碼方式必須為MPEG編碼,考慮到現在先進的ts編碼方式是H.264了,之前用H.264編碼的ts發現播放不了
存在的問題
1.這樣播出的視頻是沒有聲音的
附參考鏈接:微信Android自動播放視頻(可交互,設置層級,無控制條,非X5)ffmpeg,jsmpeg.js,.ts視頻
1.雖然最后不管通過什么方法,算是實現了視頻自動播放的需求,但是在真正播放的示例中,你會發現,使用video標簽的時候,雖然設置了視頻的寬高,但是不起作用,所以需要在video中使用下面的屬性
這樣就可以在固定區域播放視頻了。
2.借助方案1的思路,其實可以實現用戶上傳視頻時的預覽
3.將mp4轉換成jsmpeg可播放的ts文件的方法
mac os下安裝homebrew,之后使用brew install jsmpeg,運行下面命令:ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -codec:a mp2 -b 0 out.ts (其中in.mp4和out.ts填寫原視頻的路徑以及轉出ts的路徑),親測有效
其實關于瀏覽器video的問題困擾了我很久,昨日在segment上瀏覽到“chrome66 禁止自動播放后,有什么比較好的方法實現audio的自動播放嗎”這樣一個提問的時候,進去看到回答,突然想起video是不是也是一樣的情況,今天看了下,果然是類似的,解了很久的疑問,所以勉勵自己一定要善于發現并舉一反三。
上面提到的不論是解決方案或者說補充的,大概能解決一大半手機瀏覽器視頻相關的問題,剩下的問題有機會再補充。
參考鏈接:
chrome66 禁止自動播放后,有什么比較好的方法實現audio的自動播放嗎
微信Android自動播放視頻(可交互,設置層級,無控制條,非X5)ffmpeg,jsmpeg.js,.ts視頻
mac osx 下 homebrew安裝
mac 系統安裝使用 ffmpeg
HTML5音視頻播放(Video,Audio)和常見的坑處理
video在微信和QQ瀏覽器中不全屏播放解決
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/11066.html
摘要:參考鏈接禁止自動播放后,有什么比較好的方法實現的自動播放嗎微信自動播放視頻可交互,設置層級,無控制條,非視頻下安裝系統安裝使用音視頻播放和常見的坑處理在微信和瀏覽器中不全屏播放解決 1、問題的提出 某一天接了個需求,需要在手機的H5頁面內加入視頻,我開開心心做完,準備交付的時候,問題來了,PM想要用戶一進入頁面,視頻就開始播放,不需要用戶手動點擊。 2、嘗試解決 加autoplay 視...
摘要:參考鏈接禁止自動播放后,有什么比較好的方法實現的自動播放嗎微信自動播放視頻可交互,設置層級,無控制條,非視頻下安裝系統安裝使用音視頻播放和常見的坑處理在微信和瀏覽器中不全屏播放解決 1、問題的提出 某一天接了個需求,需要在手機的H5頁面內加入視頻,我開開心心做完,準備交付的時候,問題來了,PM想要用戶一進入頁面,視頻就開始播放,不需要用戶手動點擊。 2、嘗試解決 加autoplay 視...
閱讀 893·2021-09-03 10:42
閱讀 1510·2019-08-30 15:56
閱讀 1443·2019-08-29 17:27
閱讀 869·2019-08-29 15:25
閱讀 3155·2019-08-26 18:27
閱讀 2479·2019-08-26 13:41
閱讀 1887·2019-08-26 10:39
閱讀 1569·2019-08-23 18:36