“漫威电影十周年” H5视频播放分析

2018-08-14  本文已影响0人  干掉大北兔

在这个案例(http://go.163.com/web/20180423_aa3/index.html)里面,用了很令人感兴趣的视频相关知识,并根据系统做了判断,分别采用不同的解决方案。

1.首先创建两个视频播放器函数
分别是ios的mp4播放video_1()
andriod的ts播放器video_2()

ios:

<div class="video_cont warp">

<video id="video"class="video"src="http://flv2.bn.netease.com/videolib3/1804/28/PZLVY1335/SD/PZLVY1335-mobile.mp4"preload="auto" x-webkit-airplay="true"playsinline="true" webkit-playsinline="true"x5-video-player-type="h5"x5-video-player-fullscreen="true"></video>

</div>

android(创建一个canvas用于渲染jsmpeg内容):

<canvas id="canvas"class="warp" width="640"height="1236"></canvas>

var canvas, player;

function video_1() {

          $(document).on('WeixinJSBridgeReady', function() {

                    $('#video')[0].load();

                      //$('.music')[0].load();

          });

          $('#video')[0].load();

            //$('.music')[0].load();

}

function video_2() {

          canvas = document.querySelector('#canvas');

          player = new JSMpeg.Player('out108.ts', {

                    canvas: canvas,

                    loop: false,

                    autoplay: false,

                    audio: true

                    // chunkSize: 1024 * 512

          });

          $(document).on('WeixinJSBridgeReady', function() {

                    player.audioOut.unlock(onUnlocked);

          });

          player.audioOut.unlock(onUnlocked);

          function onUnlocked() {

                    player.volume = 1;

          }

          player.play();

          player.currentTime = 0;

          player.pause();

}

2.在初始化函数里面进行浏览器判断function init() {

function init() {

           if(netease.ua.android || netease.ua.weibo) {

                      player.play();

                      render();

           } else if(netease.ua.ios) {

                      $('.video')[0].play();

                      $('.video').on('ended', function() {

                                 $('#canvas').remove();

                                 $('.video_cont').hide();

                                 $('.close_btn').hide();

                      })

           }

           $('.cbt').on('click', function() {

                      if(netease.ua.android || netease.ua.weibo) {

                                 player.pause();

                                 player.destroy();

                                 $('#canvas').remove();

                                 $('.close_btn').hide();

                      } else if(netease.ua.ios) {

                                 $('#canvas').remove();

                                 $('.video')[0].pause();

                                 $('.video_cont').hide();

                                 $('.close_btn').hide();

                      }

           })

}

3.在body.onload函数里面加入

if(netease.ua.android || netease.ua.weibo) {

            video_2();

            $('.video_cont').remove();

} else if(netease.ua.ios) {

            video_1();

}

其他:其实在ios里面,也是可以用JSMpeg播放.ts视频,只是不明白为什么没有声音?是因为ios不支持JSMpeg的mp2音频还是什么原因?
但是,我用了JSMpeg+mp3播放也能够解决ios下使用同一套视频播放方案的问题.

【H5案例分享】网易新闻|哒哒:漫威电影十周年
https://zhuanlan.zhihu.com/p/36189972

上一篇下一篇

猜你喜欢

热点阅读