import QtQuick 1.0 import QtMultimediaKit 1.1 // do not forgot to import this import Qt 4.7 import "../Shared" Rectangle { id: videoPlayer width: 360 //parent.width height: 640 //parent.height color: "#000000" property bool durationShowed: false property int startPosstrollTime: 0 property string current_video_source: "" property int seekPosition: 0 property int currentPosition: 0 property int percent_to_mark: 0 property bool movie_watched: false property string movieTitle onMovieTitleChanged: videoControls.titleMovieStr = movieTitle onCurrent_video_sourceChanged: playContent() signal prerollEnd() signal movieEnd() signal postrollEnd() signal videoError(int pstn) MouseArea { anchors.fill: parent onClicked: { videoControls.opacity = 1 } } Video{ id: videoMovie width: parent.width height: parent.height anchors.fill: parent //autoLoad: true //focus: true //fillMode: Stretch //volume: slide.value //fillMode: Video.Stretch onPositionChanged: { if(position>0){ currentPosition = position if( startPosstrollTime == 0){ startPosstrollTime = videoMovie.duration - 3000 } showProgress(position) if(!movie_watched){ if(percent_to_mark!=0){ if((position*100/duration)>percent_to_mark){ movie_watched = true contentWatched() } } else { movie_watched = true contentWatched() } } /* if(position >= startPosstrollTime && video.source == movie && postrollShowed == false) { if (video.adv_post != ""){ video.stop() videoControls.show = false advertTitle.show =true postrollShowed = true current_video_source = postroll //video.play() //filmBegin() } } */ } } onStarted: { volume =0.7 if(!durationShowed) showDuration(duration) //videoSlider.value = 0 /* if( status == Video.Loaded) { hideSpinner() } if(status == Video.Buffered) { hideVideoSpinner() } if( status == Video.Buffering) { // filmBuffering() showVideoSpinner() } */ } onStopped: { } onStatusChanged: { if(videoMovie.status == Video.Buffering ) { showVideoSpinner() } if(videoMovie.status == Video.Buffered ){ hideVideoSpinner() } if(videoMovie.status == Video.EndOfMedia) { console.log("End Of Movie!") if(!movie_watched)contentWatched() videoMovie.stop() timerStop() startThePostroll() } if(videoMovie.status == Video.Buffering ) console.log("Video is Buffering") if(videoMovie.status == Video.NoMedia ) console.log("Video is NoMedia") if(videoMovie.status == Video.Loading ) console.log("Video is Loading") if(videoMovie.status == Video.Loaded ) console.log("Video is Loaded ") if(videoMovie.status == Video.Stalled ) console.log("Video is Stalled") if(videoMovie.status == Video.Buffered ) console.log("Video is Buffered") if(videoMovie.status == Video.EndOfMedia ) console.log("Video is EndOfMedia") if(videoMovie.status == Video.UnknownStatus ) console.log("Video is UnknownStatus") /* if(video.status == Video.InvalidMedia ){ console.log("Video is InvalidMedia") if(seekPosition==0){ if(currentPosition>0){ videoError(currentPosition) } }else { errorBox.opacity = 1 hideVideoSpinner() } } */ } } VideoControls{ id: videoControls width: parent.width height: parent.height opacity: 0 } Spinner{ id: videoSpinner anchors.fill: parent show: false } /* MessageBox{ id: errorBox opacity: 0 anchors.centerIn: parent width: 320 height: 210 textButton: "ОК" message: "Нажми на кнопку, получишь результат" onClicked: postrollEnd() } */ function playContent() { videoMovie.source = current_video_source videoControls.show = false console.log("Movie from: "+videoMovie.source) showVideoSpinner() videoMovie.play() timerStart() } function showVideoSpinner(){ videoSpinner.show = true } function hideVideoSpinner(){ videoSpinner.show = false } function showDuration(duration){ if(duration>0){ var sec = duration/1000 var min = sec%3600 min-=30 if(min<0) min = 0 min = min/60 if(min==60) min=0 var hours = sec/3600-0.5 if(hours<0) hours=0 sec = sec%60 if(sec<10) videoControls.duration =hours.toFixed(0)+":"+min.toFixed(0)+":0"+sec.toFixed(0) else videoControls.duration =hours.toFixed(0)+":"+min.toFixed(0)+":"+sec.toFixed(0) videoControls.videoSliderMaximum = duration durationShowed = true } } function showProgress (position){ var sec = position/1000 var min = sec%3600 min-=30 if(min<0) min = 0 min = min/60 if(min==60) min=0 var hours = sec/3600-0.5 if(hours<0) hours=0 sec = sec%60 if(sec==60) sec =0 if(sec<10){ if(min<10) videoControls.position =hours.toFixed(0)+":0"+ min.toFixed(0)+":0"+sec.toFixed(0) else videoControls.position =hours.toFixed(0)+":"+ min.toFixed(0)+":0"+sec.toFixed(0) } else{ if(min<10) videoControls.position =hours.toFixed(0)+":0"+ min.toFixed(0)+":"+sec.toFixed(0) else videoControls.position =hours.toFixed(0)+":"+ min.toFixed(0)+":"+sec.toFixed(0) } videoControls.videoSliderValue = position console.log(videoControls.position) } function volumeUp(){ videoControls.volumeUpPressed() } function volumeDown(){ videoControls.volumeDownPressed() } }