h5 video 視頻播放開發(fā) 和 問題集合

1.h5 video支持的格式

一共支持三種格式: Ogg僵腺、MPEG4鲤孵、WebM。但這三種格式對于瀏覽器的兼容性卻各不同辰如。

image

重點:比如MP4格式普监,MP4只是一個容器,里面還有一個叫編碼器的東西琉兜。格式雖然都是MP4但是html中只支持H.264的編碼格式凯正。所以要用軟件來轉(zhuǎn)碼。
MP4 = MPEG 4文件使用 H264 視頻編解碼器和AAC音頻編解碼器
WebM = WebM 文件使用 VP8 視頻編解碼器和 Vorbis 音頻編解碼器
Ogg = Ogg 文件使用 Theora 視頻編解碼器和 Vorbis音頻編解碼器

2.h5 video視頻添加封面圖片

<video poster="images/spbg.jpg" src="about.mp4" controls="controls">
您的瀏覽器不支持 video 標簽豌蟋。
</video>

補充:有時會出現(xiàn)視頻封面無法鋪滿的情況廊散,需要使用object-fit屬性鋪滿整個屏幕

3.h5 video標簽屏蔽下載按鈕和取消右鍵菜單

<style type="text/css">
 video::-internal-media-controls-download-button {
  display:none;
}
video::-webkit-media-controls-enclosure {
    overflow:hidden;
 }
video::-webkit-media-controls-panel {
  width: calc(100% + 30px);
}
 </style>

如果是PC電腦上,完全可以用video標簽controlsList屬性梧疲,修改成如下即可允睹!

<video controls controlsList="nodownload"></video>

//去除右鍵事件

$("video").live("contextmenu",function(){//取消右鍵事件
    return false;});

4.H5兼容性,參考代碼:

<video
  id="videowrap" 
  src="video/test.mp4" 
  poster="images/1.jpg" /*視頻封面*/
  preload="auto" 
  webkit-playsinline="true" /*這個屬性是ios 10中設(shè)置可以
                     讓視頻在小窗內(nèi)播放幌氮,也就是不是全屏播放*/  
  playsinline="true"  /*IOS微信瀏覽器支持小窗內(nèi)播放*/ 
  x-webkit-airplay="allow" 
  x5-video-player-type="h5"  /*啟用H5播放器,是wechat安卓版特性*/
  x5-video-player-fullscreen="true" /*全屏設(shè)置缭受,
                     設(shè)置為 true 是防止橫屏*/>
  x5-video-orientation="portraint" /*播放器支付的方向,
                     landscape橫屏该互,portraint豎屏米者,默認值為豎屏*/
  style="object-fit:fill">
</video

5.video在播放m3u8拖動進度條BUG 拖動回彈

video在播放m3u8拖動進度條,進入緩沖時會卡很久宇智,比如當前播放1:20秒塘雳,拖動進度條到1:30秒,會進行緩沖普筹,要緩沖很久败明,且緩沖好之后,會跳到1:35秒-1:45秒左右繼續(xù)播放太防,并不會在實際拖動進度條的位置播放妻顶。
此問題在小程序上不會出現(xiàn)酸员,只在app端有 部分ios手機有這現(xiàn)象

問題已確認。

因為該m3u8是加密的hls流讳嘱。每個切片大小為10s

1 卡頓問題幔嗦,比如 當跳轉(zhuǎn)至下一分鐘時,需要連續(xù)下載6個切片且解密成功后沥潭,才能繼續(xù)播放邀泉,所以會有卡頓現(xiàn)象。
2 seek不準確的問題钝鸽, 因為切片的最小單位是10s,每次跳轉(zhuǎn)后需要重新下載并且從下一個10s開始播放汇恤。

uni-app的video組件基于 ffmpeg。
上述兩個問題在 ffplay 和 vlc播放器上同樣存在拔恰。

微信小程序不存在此問題因谎,從現(xiàn)象上看,因為他從第一秒播放的時候就預加載了盡可能多的切片到本地颜懊,后續(xù)的播放都是本地操作财岔。
稍后video組件會支持類似的功能。

6.video 點擊全屏 如何橫屏播放

h5 video 橫屏播放

http://www.reibang.com/p/23f9dbfab563

7.video 視頻圖像 變形 拉伸 壓縮

video{

  height:auto;
  width:100%
}
方法一 css 寫法 video視頻自適應縮放顯示 根據(jù)寬高比16:9

https://blog.csdn.net/weixin_45266779/article/details/120990591

方法二 通過 js 計算的方法 設(shè)置 object-fit 屬性

https://www.cnblogs.com/congxueda/p/15091316.html

方法三 調(diào)整rotateX即可實現(xiàn)高度變小河爹,也就是寬高比變大了

https://www.cnblogs.com/liuxianan/p/html5-video-resize.html

方法四

8.video ios 打開頁面 禁止 全屏 播放

video 標簽中添加playsinline屬性 webkit-playsinline='true' playsinline='true'
<video controls="controls" 
webkit-playsinline='true'
 playsinline='true' 
preload="auto">  
</video>
native層

Obj-C中匠璧,需要添加配置webview.allowsInlineMediaPlayback = YES;
Swift請查找相關(guān)API進行配置。

開發(fā)5+App咸这,需要在manifest.json的plus節(jié)點下新增allowsInlineMediaPlayback節(jié)點為true患朱。

"plus":{  
    "allowsInlineMediaPlayback": true  
}

9.video ios 禁止 畫中畫 不顯示 畫中畫按鈕 disablePictureInPicture

            <video id="video"
                   width="320" height="240"  webkit-playsinline  playsinline="true" 
                    x5-video-player-type="h5" x5-video-player-fullscreen="false" 
                    src="@/assets/images/content-service/1637212363598590.mp4" 
                    x5-video-orientation="landscape" controls="controls" 
                    controlslist="nodownload" 
                    disablePictureInPicture
                    :poster="joinCmsServer(articleDetail.thumbnail)" >
                    your browser does not support the video tag
                  </video>

10. 監(jiān)聽 全屏 和 非全屏事件

document.addEventListener('webkitfullscreenchange', function() {  
        var el = document.webkitFullscreenElement; //獲取全屏元素  
        console.log('--webkitfullscreenchange--' + el)
        if(el) {  
             console.log('--全屏--')
        } else {  
            console.log('--非全屏--')
        }  
      });  
<script>
    //jQuery監(jiān)聽事件(窗口狀態(tài)改變)
    $(window).resize(function () {
        if (checkIsFullScreen()) {
            console.log("進入全屏");
        } else {
            console.log("退出全屏");
        }
    });
    //js監(jiān)聽事件(全屏狀態(tài)改變)
    /*document.addEventListener('fullscreenchange', () => {
        if (checkIsFullScreen()) {
            console.log("進入全屏");
        } else {
            console.log("退出全屏");
        }
    });*/
    //上面2個監(jiān)聽事件可根據(jù)項目需求2選1,然后調(diào)用此檢測全屏方法
    function checkIsFullScreen(){
        var isFullScreen = document.fullscreen || document.mozFullScreen || document.webkitIsFullScreen;
        return isFullScreen == undefined ? false : isFullScreen;
    }
</script>    

安卓監(jiān)聽進入全屏的事件:

jsvideo.addEventListener("x5videoenterfullscreen", () => {
  console.log("進入全屏通知");
})
jsvideo.addEventListener("x5videoexitfullscreen", () => {
  console.log("退出全屏通知");
})

IOS監(jiān)聽進入全屏的事件:

jsvideo.addEventListener("webkitbeginfullscreen", () => {
  console.log("進入全屏通知");
})

jsvideo.addEventListener("webkitendfullscreen", () => {
  console.log("退出全屏通知");
})
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市炊苫,隨后出現(xiàn)的幾起案子裁厅,更是在濱河造成了極大的恐慌,老刑警劉巖侨艾,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件执虹,死亡現(xiàn)場離奇詭異,居然都是意外死亡唠梨,警方通過查閱死者的電腦和手機袋励,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來当叭,“玉大人茬故,你說我怎么就攤上這事∫媳睿” “怎么了磺芭?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長醉箕。 經(jīng)常有香客問我钾腺,道長徙垫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任放棒,我火速辦了婚禮姻报,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘间螟。我一直安慰自己吴旋,他們只是感情好,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布厢破。 她就那樣靜靜地躺著荣瑟,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溉奕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天忍啤,我揣著相機與錄音加勤,去河邊找鬼。 笑死同波,一個胖子當著我的面吹牛鳄梅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播未檩,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼戴尸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了冤狡?” 一聲冷哼從身側(cè)響起孙蒙,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎悲雳,沒想到半個月后挎峦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡合瓢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年坦胶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片晴楔。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡顿苇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出税弃,到底是詐尸還是另有隱情纪岁,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布则果,位于F島的核電站蜂科,受9級特大地震影響顽决,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜导匣,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一才菠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧贡定,春花似錦赋访、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旋炒,卻和暖如春步悠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瘫镇。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工鼎兽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人铣除。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓谚咬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尚粘。 傳聞我的和親對象是個殘疾皇子择卦,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容