简体   繁体   English

Ionic/Angular 离子幻灯片视频延迟加载

[英]Ionic/Angular ion-slides video lazy loading

Im trying to do an app that is like a Carousel but with videos.我正在尝试做一个类似于 Carousel 但带有视频的应用程序。 The problem is when I load the video in the html tag it loads all videos at once which is not a good thing because its gonna be slow if I have lots of videos.问题是当我在 html 标签中加载视频时,它会一次加载所有视频,这不是一件好事,因为如果我有很多视频,它会很慢。 I tried to load the videos on the $ionicSlides.slideChangeEnd event but it only changes the first video.我试图在 $ionicSlides.slideChangeEnd 事件上加载视频,但它只会更改第一个视频。

Is there any libraries like a lazy loading for videos for ion-slides?有没有像延迟加载离子幻灯片视频的库? Im kinda lost right now on how to solve the problem.我现在有点迷失了如何解决这个问题。 Any tips are appreciated thanks.感谢任何提示。

controller.js控制器.js

.controller('Ctrl', function($scope, $ionicModal) {
    var videos = [{
        id: 1,
        videoUrl: 'videos/video1.mp4'
    }, {
        id: 2,
        videoUrl: 'videos/video2.mp4'
    }, {
        id: 3,
        videoUrl: 'videos/video3.mp4'
    }, {
        id: 4,
        videoUrl:  'videos/video4.mp4'
    }];
    $scope.options = {
        loop: false,
        direction: 'horizontal',
        speed: 500,
        pagination: false
    }
    $scope.$on("$ionicSlides.sliderInitialized", function(event, data){
        // data.slider is the instance of Swiper
        $scope.slider = data.slider;
    });

    $scope.$on("$ionicSlides.slideChangeStart", function(event, data){
        console.log("Change Start");
    });

    $scope.$on("$ionicSlides.slideChangeEnd", function(event, data){
        var v =document.getElementById("myvideo");
        $scope.activeIndex = data.slider.activeIndex;
        $scope.previousIndex = data.slider.previousIndex;
        v.src = videos[data.slider.activeIndex].videoUrl;
        v.load();
        v.play();
    });
});

video.html视频.html

<ion-content scroll="false">
    <ion-slides options="options" slider="data.slider">
        <ion-slide-page ng-repeat="video in videos">
            <video id="myvideo" loop autoplay class="video-js" webkit-playsinline >
                </video>
        </ion-slide-page>
    </ion-slides>
</ion-content>

将 preload="none" 添加到您的视频并删除自动播放属性。

<video id="myvideo" loop preload="none" class="video-js" webkit-playsinline ></video>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM