var canvas, stage, txt, str, playbackSpeed = 1,
framerate = 25, duration, capturer = null, videoArr = [], frameCount = 0 , imgArr = null,myTimer;
var frameRenderCount = 0, replay = false, videoId = 0, secondCount = 1, currentTime, videoOutputURL, imodal;
var videos = [
/*{
src: 'videos/360_01.mp4',
text: {
x: 433,
y: 296,
fontFaceName : "'CS\ ChatThaiUI'",
fontSize : 18,
font: "18px "+"'CS\ ChatThaiUI'",
color : "rgba(255,255,255,0.8)",
lineWidth : 500,
lineHeight : 20,
},
animate : function () {
// txt.alpha = (frame - 90) * 0.015
if(videoDOM.currentTime > 3.6){
txt.alpha = animateFrame * 0.015
animateFrame++;
}
}
},*/
{
src: 'videos/360_02.mp4',
text: {
x: 320,
y: 314,
fontFaceName : "'CS\ ChatThaiUI'",
fontSize : 18,
font: "18px "+"'CS\ ChatThaiUI'",
color : "rgba(255,255,255,0.8)",
lineWidth : 500,
lineHeight : 20,
},
animate : function (frame) {
//txt.alpha = (frame - 230) * 0.015
if(videoDOM.currentTime > 9){
txt.alpha = animateFrame * 0.015
animateFrame++;
}
}
},
{
src: 'videos/360_03.mp4',
text: {
x: 320,
y: 325,
fontFaceName : "'CS\ ChatThaiUI'",
fontSize : 18,
font: "18px "+"'CS\ ChatThaiUI'",
color : "rgba(255,255,255,0.8)",
lineWidth : 500,
lineHeight : 20,
},
animate : function (frame) {
//txt.alpha = (frame - 230) * 0.015
if(videoDOM.currentTime > 9){
txt.alpha = animateFrame * 0.015
animateFrame++;
}
}
},
{
src: 'videos/360_04.mp4',
text: {
x: 320,
y: 325,
fontFaceName : "'CS\ ChatThaiUI'",
fontSize : 18,
font: "18px "+"'CS\ ChatThaiUI'",
color : "rgba(255,255,255,0.8)",
lineWidth : 500,
lineHeight : 20,
},
animate : function (frame) {
//txt.alpha = (frame - 230) * 0.015
if(videoDOM.currentTime > 9){
txt.alpha = animateFrame * 0.015
animateFrame++;
}
}
},
{
src: 'videos/360_05.mp4',
text: {
x: 320,
y: 310,
fontFaceName : "'CS\ ChatThaiUI'",
fontSize : 18,
font: "18px "+"'CS\ ChatThaiUI'",
color : "rgba(255,255,255,0.8)",
lineWidth : 500,
lineHeight : 20,
},
animate : function (frame) {
// txt.alpha = (frame - 230) * 0.015
if(videoDOM.currentTime > 9){
txt.alpha = animateFrame * 0.015
animateFrame++;
}
}
},
];
/*
$.getScript('//connect.facebook.net/en_th/sdk.js', function () {
FB.init({
appId: '979262895558775',
version: 'v2.10'
});
FB.XFBML.parse();
});
*/
function switchVideo(n) {
videoId = n;
if (n >= videos.length) n = 0;
videoDOM.setAttribute("src", videos[n].src);
videoDOM.load();
for (var k in videos[n].text){
//console.log("Key is " + k + ", value is " + videos[n].text[k]);
txt[k] = videos[n].text[k]
}
}
$( document ).ready(function() {
init()
swiper.on("onTransitionEnd",function (swiper) {
//console.log(swiper.activeIndex)
switchVideo(swiper.activeIndex)
})
});
function init() {
canvas = document.getElementById("video-canvas");
stage = new createjs.Stage(canvas);
videoDOM = document.createElement('video');
//videoDOM.src = 'ezgif.com-resize.mp4';
//videoDOM.load();
videoDOM.addEventListener('ended', videoEndHandler, false);
//videoDOM.addEventListener('seeked',videoSeekHandler,false);
video = new createjs.Bitmap(videoDOM);
stage.addChild(video).set({ x: 0, y: 0, alpha: 1});
//videoDOM.play();
/* var container = new createjs.Container();
stage.addChild(container);*/
//var str = "ปวงข้าพระพุทธเจ้า\n ขอน้อมเกล้าน้อมกระหม่อมรําลึกใน\n พระมหากรุณาธิคุณหาที่สุดมิได้\n ข้าพระพุทธเจ้า";
str = "ข้าพระพุทธเจ้า บริษัท บัณฑิต เซ็นเตอร์ จำกัด";
txt = new createjs.Text("", "", "#FFF");
txt.text = "บริษัท บัณฑิต เซ็นเตอร์ จำกัด";
txt.textBaseline = "middle";
txt.textAlign = "center";
//txt.alpha = 0;
//txt.shadow = new createjs.Shadow("#000000", 0, 0, 30);
txt.shadow = new createjs.Shadow("rgba(0,0,0,0.5)",0,0,10);
//txt.x = (stage.canvas.width) / 2 + 120;
/********/
//txt.x = (stage.canvas.width - 550) / 2;
stage.addChild(txt);
switchVideo(0)
// console.log(videoDOM.duration);
videoDOM.addEventListener('loadedmetadata', function(){
//alert( this.duration())
//alert( myPlayer.duration());
videoDOM.currentTime = this.duration - 1;
duration = this.duration
console.log(duration);
})
stage.update();
//clickHandler()
createjs.Ticker.addEventListener("tick", draw);
// Set same as video sourse
createjs.Ticker.setFPS(framerate)
/* /!*********!/
var per_page = 3;
if(screen.width > 767){
per_page = 5
}
if(screen.width > 1200){
per_page = 7
}
var swiper = new Swiper('.swiper-container', {
pagination: '.swiper-pagination',
slidesPerView: per_page,
paginationClickable: true,
spaceBetween: 30,
freeMode: false
});*/
}
/*
var btnPlay = document.getElementById("play")
btnPlay.addEventListener('click', function (e) {
e.preventDefault();
startCapture();
}, false);*/
function startCapture() {
canvas.style.display = 'none';
document.body.style.pointerEvents = "none"
/* if(simulated == false){
capturer = new CCapture({
verbose: false,
display: false,
framerate: framerate,
motionBlurFrames: 0,
name: "wish",
//quality: 100,
format: 'webm',
workersPath: 'js/',
});
}else{*/
capturer = new CCapture({
verbose: false,
display: false,
framerate: framerate,
motionBlurFrames: 0,
name: "wish-"+Date.now(),
//quality: 100,
format: 'ffmpegserver',
//workersPath: "http://27.254.156.24:8082/Canvas/3rdparty/",
workersPath: genServer+"/Canvas/3rdparty/",
//timeLimit: videoDOM.duration,
//frameLimit: 0,
//autoSaveTime: 0,
//onProgress: function( p ) { progress.style.width = ( p * 100 ) + '%' }
});
// }
//clickHandler()
//clock()
//console.log(videoDOM.playbackRate)
capturing = true;
initPreplay();
//if (!myTimer) myTimer = setInterval(myClock, 1000);
videoDOM.play();
capturer.start();
}
function clickCaptured(){
var config = {
id : 'md-1',
class:'modal',
clickOutsideToClose : false,
closeButton : false,
body :'
ระบบกำลังบันทึกวิดีโอของท่าน...
อาจต้องใช้เวลาประมาณ 1 - 3 นาที
กรุณารอสักครู่ค่ะ'
};
imodal = new Modal(config);
imodal.open();
//Analytics Track
ga('send', 'event', {
eventCategory: campaignName,
eventAction: 'click',
eventLabel: "BTN Captured"
});
setTimeout(function () {
startCapture();
},1000)
}
function playVideo() {
replay = true;
//txt.alpha = 0;
//videoDOM.currentTime = 0;
initPreplay();
videoDOM.play();
ga('send', 'event', {
eventCategory: campaignName,
eventAction: 'click',
eventLabel: "BTN Video Preview"
});
}
function initPreplay() {
txt.alpha = 0;
animateFrame = 0;
videoDOM.currentTime = 0;
secondCount = 0;
frameRenderCount = 0;
}
var animateFrame = 0;
function draw() {
stage.update();
//currentTime = videoDOM.currentTime;
if (capturer) {
//videoDOM.play();
capturer.capture(canvas)
frameRenderCount++;
//textAnimate(frameRenderCount)
videos[videoId].animate(frameRenderCount);
}
if(replay){
//console.log(videoDOM.currentTime+" : "+frameRenderCount)
frameRenderCount++;
videos[videoId].animate(frameRenderCount);
}
}
function clickHandler(pEvent) {
videoDOM.currentTime += (1 / 25);
//videoDOM.play();
videoDOM.pause();
txt.text = str;
// TweenLite.from(txt,5, {delay: 1.5,alpha:0});
}
var simulated = false, capturing = false;
function videoEndHandler() {
console.log('videoEndHandler at '+ frameRenderCount + " Frames")
//this.setAttribute( 'href', );
if(capturing){
// canvas.style.display = 'none';
if (simulated == false) {
playbackSpeed = (frameRenderCount * 0.93) / (duration * framerate);
console.log(playbackSpeed);
/*
playbackSpeed = playbackSpeed > 1 ? 1 : playbackSpeed;
console.log(playbackSpeed);*/
if(playbackSpeed < 0.1){
imodal.remove();
var config = {
id : 'md-2',
class:'modal',
clickOutsideToClose : false,
closeButton : false,
body :'เกิดข้อผิดพลาด
กรุณารีเฟรฟหน้านี้แล้วลองใหม่อีดครั้ง
'
+''
};
imodal = new Modal(config);
imodal.open();
}else{
simulated = true;
videoDOM.currentTime = 0;
videoDOM.playbackRate = playbackSpeed;
txt.alpha = 0;
capturer.stop();
capturer = true;
/*setTimeout( ()=> {
startCapture();
},1000)*/
startCapture()
//console.log(capturer);
//startCapture()
}
} else {
console.log("videoSave() at " + frameRenderCount + " Frames");
videoSave();
videoDOM.pause();
}
}else{
videoDOM.pause();
replay = false;
}
secondCount = 0;
frameRenderCount = 0;
}
function videoSave() {
//if(capturer){
capturer.stop();
// capturer.save();
//console.info('----------- capturer.save ------------')
capturer.save(showVideoLink);
//capturer.save();
//Reset Data
capturer = null;
simulated = false;
canvas.style.display = 'block';
document.body.style.pointerEvents = ""
clearInterval(myTimer);
secondCount = 0;
videoDOM.playbackRate = 1
myTimer = false;
capturing = false;
}
function showVideoLink(url, size) {
//console.info('----------- showVideoLink ------------')
// console.info('url :: http://27.254.156.24:8082' + url);
videoOutputURL = genServer + url;
imodal.close();
imodal.remove();
imodal = undefined;
var config = {
id : 'md-1',
class:'modal',
clickOutsideToClose : false,
closeButton : false,
body :
'ขั้นตอนที่ ๓ ดาวน์โหลดวิดีโอของท่าน
'+
''+
''
+'ร่วมบอกต่อบริการสร้างวิดีโอพร้อมข้อความ คลิกเลย
'
+' '
+'ถ้าต้องการสร้างวิดีโออื่นๆ กรุณารีเฟรชหน้านี้ หรือ replay คลิกที่นี่
'
//body : modalCaptureing()
};
imodal = new Modal(config);
imodal.open()
console.info('size :: ', size)
}
function downloadVideo(e){
// e.preventDefault()
// ga('Main.send', 'event', 'สร้างรูปถวายความอาลัย Template 6', 'Download', username.value);
e.href = videoOutputURL;
e.download = videoOutputURL;
ga('send', 'event', {
eventCategory: campaignName,
eventAction: 'click',
eventLabel: "BTN Download"
});
}
/*
function postVideoToFacebook() {
FB.login(function (response) {
//postImageToFacebook(response.authResponse.accessToken, blob, handler);
console.log(response.authResponse.accessToken)
videoOutputURL ="http://27.254.156.24:8082/frameencoder/downloads/untitled-574.mp4"
makeApiRequest(
response.authResponse.accessToken,
{
url: 'me/videos',
data: {file_url:videoOutputURL, description: 'title'},
method: 'POST'
}, successCb, errorCb);
}, {scope: "publish_actions"});
}
function successCb() {
}
function errorCb() {
}
function makeApiRequest(accessToken, config, successCallback, errorCallback) {
var baseUrl = 'https://graph.facebook.com/v2.10/';
// parse config and defaults
var config = config || {},
url = config.url || 'me',
data = config.data || {},
method = config.method || 'GET';
config.url = baseUrl + url + '&access_token=' + accessToken;
// make the api request
$.ajax(config)
.done(function(data) {
if (!!successCallback) {
successCallback(data);
} else {
console.log(data);
}
}
).error(function(xhr) {
errorCallback(xhr);
});
}
*/
/*if( navigator.userAgent.indexOf('Chrome') > -1 ){
// alert('this is chrome')
// Do something in Chrome
}*/
var App = React.createClass({
getInitialState: function() {
return {value: videos[videoId].text.y,value2:videos[videoId].text.fontSize};
},
/* componentDidMount: function() {
//this.setState({seconds: this.state.seconds + 1});
console.log('tick')
},*/
handleChange: function (e) {
//const title = e.target.value;
//str = "ข้าพระพุทธเจ้า " + title;
str = e.target.value;
txt.text = str;
//txt.alpha = 1;
stage.update();
// console.log(title)
},
handleRangeChange: function (e) {
this.setState({value: e.target.value});
//txt.font = e.target.value + "px "+ txt.fontFaceName;
txt.y = e.target.value;
/*txt.scaleX = e.target.value ;
txt.scaleY = e.target.value ;*/
//console.log(e.target.value)
stage.update();
},
handleRangeChange2: function (e) {
this.setState({value2: e.target.value});
//txt.font = e.target.value + "px psl_malineeitalic";
txt.font = e.target.value + "px "+ txt.fontFaceName;
//console.log(e.target.value)
stage.update();
},
render: function () {
return (
);
}
});
React.render(, document.getElementById('app'));