視頻互動類的專案難免會遇到視頻跳轉位置的問題,我這大致分為兩類:
一、手動跳轉:就是說在用戶主動做了某一操作后視頻跳轉到某一個時間點,
二、自動跳轉:當視頻到達某一時間節點自動跳轉到另一時間節點,
第一類其實只要控制時間節點能對上就基本沒問題,也就是
video.currentTime = 1 //單位:秒
但實際上,android卻表現怪異,視頻總是會跳到你想要的視頻時間點的附近1-2s左右;
解決方案為,跳轉視頻的關鍵幀間隔,簡單解釋為,當視頻的fps=24,關鍵幀間隔為72(默認)時,視頻會在每 72/24=3s 設定一個關鍵幀,當你設定video.currentTime=2.5時,android會自動跳到最近的關鍵幀,也就離2.5s最近的3s處,也就會導致時間點會偏差1-2s,匯出視頻時可以設定你想要的幀間隔,但同時幀間隔越小則視頻體積會越大,合理設定幀間隔或者插入相同幀來延長時間點,使得時間點包含關鍵幀是比較好的方案,比如說fps=24,想要跳到1秒20幀,那就關鍵幀間隔設定為48,然后1秒21、22、23、24幀跟20幀一樣,視頻會跳轉到關鍵幀1秒24,如此畫面就會是你想要的,
第二類問題就除了要解決第一個視頻時間點問題外,還要監測視頻當前的進度,video標簽有一個自帶的方法timeupdate,但有一個問題,就是這個事件是大概250ms執行一次,但如果fps=24,幀間隔大概1000/24=42ms;你拿到時間點會有幾幀的偏差,可以使用定時器來拿到當前時間點
setInterval(() => {
let cur = video.currentTime
}, 40);
然后再在每個時間點的后面插入3-4幀相同幀,確保不會跳幀,以上,基本可以確保視頻位置正確的跳轉,
完
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/41883.html
標籤:其他
