早在flash時代 咱們控制視頻播放指定時間位置的畫面也會有不許確的狀況,html
具體狀況表現爲:video.seek(time) 而實際畫面會跳到此時間附近(1-2秒)的畫面html5
而HTML5 咱們經過android
var vd=document.getElementById("DOM ID名");ide
vd.currentTime=10 ;spa
能夠指定視頻當即播放對應時間位置的畫面 (電腦,IOS端都可)code
可是andorid端真機上卻發現幾個問題視頻
Q:設置 vd.currentTime=時間,可是卻沒有效果;htm
A:android端設置時間後,必定要video.play(); 纔會刷新畫面。blog
Q:vd.currentTime=時間;並video.play(); 可是視頻竟然不是從我配置的時間位置開始播放的,(具體表現爲,畫面會跳到此時間附近(1-2秒、甚至更多)的畫面)rem
A:這裏要引入一個詞語叫【視頻關鍵幀距離】android端會跳轉到離你設置currentTime 最近的一個關鍵幀位置播放。
注意:這個【關鍵幀距離】中的關鍵幀並非咱們常說的AE等軟件裏插入的關鍵幀;
你還能夠訪問這裏查看更多關於視頻中的名詞解釋:
https://helpx.adobe.com/cn/media-encoder/using/video-audio-encoding-compression.html
那麼,隨之而來的解決思路就是改變視頻的關鍵幀距離。例如:當前視頻 fps=25, 關鍵幀距離是75幀(簡單計算就是3秒一個關鍵幀), 那麼我設置 vd.currentTime=7, 7*25 =175 視頻將會從 最近的一個關鍵幀(150幀)播放。 也就會出現咱們控制播放時間不許確的現象。當咱們改變關鍵幀距離爲25幀 ,那麼就能夠準確的控制 vd.currentTime=7 的跳轉播放畫面了。若是你還有更高的精度要求,你能夠繼續縮小關鍵幀距離。可是請注意:在其餘參數相同的狀況下這會增大視頻的體積。
最後,怎麼來設置視頻的關鍵幀距離呢?恩,你猜到了,這家公司又出鏡了:Adobe Media Encoder 與 After Effects 和 Premiere Pro 這3款軟件均可以設置,我這裏使用了Media Encoder。 下面爲截圖
導入視頻,點擊紅框打開配置
設置界面。有心情的能夠慢慢研究他的功能
右側找到對應的配置,設置好 輸出便可
到此,android html5 video 設置currentTime 不許確的問題獲得解決。
若是此文對你有幫助,有力的推薦一下,有財的右側掃描QR碼 支持! :)) 雙下巴微笑