Commit 99b5098c2cb1555fe13e5ffa48bd1b15a481b3e8
1 parent
b2719bc3
Exists in
master
Adicionado suporte ao Safari.
Showing
4 changed files
with
76 additions
and
35 deletions
Show diff stats
checkout.py
@@ -4,6 +4,7 @@ import json | @@ -4,6 +4,7 @@ import json | ||
4 | import os | 4 | import os |
5 | import subprocess | 5 | import subprocess |
6 | import pyutil | 6 | import pyutil |
7 | +import shutil | ||
7 | 8 | ||
8 | getcwd=os.path.dirname(os.path.abspath(__file__)) | 9 | getcwd=os.path.dirname(os.path.abspath(__file__)) |
9 | bpy_script_action=os.path.join(getcwd, "bpy_checkout.py") | 10 | bpy_script_action=os.path.join(getcwd, "bpy_checkout.py") |
@@ -55,7 +56,7 @@ def check_action(blend_file="", action_name="", action_fake_is_valid=True, min_f | @@ -55,7 +56,7 @@ def check_action(blend_file="", action_name="", action_fake_is_valid=True, min_f | ||
55 | pyutil.log("Blend file not exists", 4) | 56 | pyutil.log("Blend file not exists", 4) |
56 | return 3 | 57 | return 3 |
57 | 58 | ||
58 | -def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=True, rm_original_video=True, hide_output=False): | 59 | +def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=True, rm_original_video=True, hide_output=False, convert_to_mp4_web_format=True): |
59 | if (file_exists(blend_file)): | 60 | if (file_exists(blend_file)): |
60 | if not ((isinstance(upload_dir, str) and isinstance(blend_file, str)) or | 61 | if not ((isinstance(upload_dir, str) and isinstance(blend_file, str)) or |
61 | (isinstance(upload_dir, unicode) and isinstance(blend_file, unicode)) or | 62 | (isinstance(upload_dir, unicode) and isinstance(blend_file, unicode)) or |
@@ -63,21 +64,27 @@ def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=Tru | @@ -63,21 +64,27 @@ def render_video(upload_dir="", blend_file="", sign_name="", convert_to_webm=Tru | ||
63 | pyutil.log("Args to render_video no match types", 4) | 64 | pyutil.log("Args to render_video no match types", 4) |
64 | return 1 | 65 | return 1 |
65 | try: | 66 | try: |
66 | - json_object= json.JSONEncoder().encode( | 67 | + json_object = json.JSONEncoder().encode( |
67 | { | 68 | { |
68 | "upload_dir": upload_dir, | 69 | "upload_dir": upload_dir, |
69 | "sign_name": sign_name | 70 | "sign_name": sign_name |
70 | } | 71 | } |
71 | ) | 72 | ) |
72 | if (hide_output): | 73 | if (hide_output): |
73 | - dev_null=open(os.devnull, 'w') | ||
74 | - result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object], stdout=dev_null, stderr=dev_null) | 74 | + dev_null = open(os.devnull, 'w') |
75 | + result_code = subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object], stdout=dev_null, stderr=dev_null) | ||
75 | else: | 76 | else: |
76 | result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object]) | 77 | result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object]) |
77 | if (convert_to_webm): | 78 | if (convert_to_webm): |
78 | - video_mp4=os.path.join(upload_dir, sign_name + ".mp4") | ||
79 | - video_webm=os.path.join(upload_dir, sign_name + ".webm") | 79 | + video_mp4 = os.path.join(upload_dir, sign_name + ".mp4") |
80 | + video_webm = os.path.join(upload_dir, sign_name + ".webm") | ||
80 | subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", video_mp4, "-r", "24", "-vcodec", "libvpx", video_webm]) | 81 | subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", video_mp4, "-r", "24", "-vcodec", "libvpx", video_webm]) |
82 | + if (convert_to_mp4_web_format): | ||
83 | + video_mp4 = os.path.join(upload_dir, sign_name + ".mp4") | ||
84 | + video_mp4_tmp = os.path.join(upload_dir, sign_name + "-tmp.mp4") | ||
85 | + shutil.copy(video_mp4, video_mp4_tmp) | ||
86 | + subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", video_mp4_tmp, "-r", "24", "-vcodec", "libx264", video_mp4]) | ||
87 | + video_mp4 = video_mp4_tmp | ||
81 | if (rm_original_video): | 88 | if (rm_original_video): |
82 | subprocess.call(["rm", video_mp4]) | 89 | subprocess.call(["rm", video_mp4]) |
83 | if (result_code == 4): | 90 | if (result_code == 4): |
view/js/corretor.js
@@ -148,10 +148,10 @@ | @@ -148,10 +148,10 @@ | ||
148 | 148 | ||
149 | function _createAnswer(task, status) { | 149 | function _createAnswer(task, status) { |
150 | var answer = {}; | 150 | var answer = {}; |
151 | - var last_answer = task.info.last_answer; | ||
152 | - var hasLastAnswer = typeof last_answer != 'undefined'; | 151 | + var lastAnswer = task.info.last_answer; |
152 | + var hasLastAnswer = typeof lastAnswer != 'undefined'; | ||
153 | if (hasLastAnswer) { | 153 | if (hasLastAnswer) { |
154 | - answer = last_answer; | 154 | + answer = lastAnswer; |
155 | } else { | 155 | } else { |
156 | answer = { | 156 | answer = { |
157 | 'number_of_fixes' : 0, | 157 | 'number_of_fixes' : 0, |
@@ -194,9 +194,9 @@ | @@ -194,9 +194,9 @@ | ||
194 | 194 | ||
195 | function _finishTask(task, deferred, answer) { | 195 | function _finishTask(task, deferred, answer) { |
196 | _enableLoading(); | 196 | _enableLoading(); |
197 | - var last_answer = task.info.last_answer; | ||
198 | - var hasLastAnswer = typeof last_answer != 'undefined'; | ||
199 | - var toSubmitUploadSessionId = hasLastAnswer ? last_answer.upload_session_id | 197 | + var lastAnswer = task.info.last_answer; |
198 | + var hasLastAnswer = typeof lastAnswer != 'undefined'; | ||
199 | + var toSubmitUploadSessionId = hasLastAnswer ? lastAnswer.upload_session_id | ||
200 | : uploadSessionId; | 200 | : uploadSessionId; |
201 | $.ajax({ | 201 | $.ajax({ |
202 | type : 'POST', | 202 | type : 'POST', |
@@ -243,31 +243,35 @@ | @@ -243,31 +243,35 @@ | ||
243 | 243 | ||
244 | function _loadTaskInfo(task, deferred) { | 244 | function _loadTaskInfo(task, deferred) { |
245 | currentTaskId = task.id; | 245 | currentTaskId = task.id; |
246 | - var sign_name = task.info.sign_name; | ||
247 | - var blend_link = videosUrl + sign_name + '_AVATAR.blend'; | ||
248 | - var avatar_vid_link = videosUrl + sign_name + '_AVATAR.webm'; | ||
249 | - var ref_vid_link = videosUrl + sign_name + '_REF.webm'; | ||
250 | - $('.sign-label').text(sign_name); | 246 | + var signName = task.info.sign_name; |
247 | + var blendLink = videosUrl + signName + '_AVATAR.blend'; | ||
248 | + var baseAvatarVidUrl = videosUrl + signName + '_AVATAR'; | ||
249 | + var avatarVidUrl = baseAvatarVidUrl + '.webm'; | ||
250 | + var baseRefVidUrl = videosUrl + signName + '_REF'; | ||
251 | + var refVidUrl = baseRefVidUrl + '.webm'; | ||
252 | + | ||
253 | + $('.sign-label').text(signName); | ||
251 | $('#submission-date').text( | 254 | $('#submission-date').text( |
252 | moment(task.info.submission_date).format('DD/MM/YYYY')); | 255 | moment(task.info.submission_date).format('DD/MM/YYYY')); |
253 | - $('#ref-video').attr('src', ref_vid_link); | ||
254 | - $('#ref-video-link').attr('href', ref_vid_link); | 256 | + $('#ref-video').html(videoHelper.getSource(baseRefVidUrl)); |
257 | + $('#ref-video-link').attr('href', refVidUrl); | ||
255 | 258 | ||
256 | - var last_answer = task.info.last_answer; | ||
257 | - var hasLastAnswer = typeof last_answer != 'undefined'; | 259 | + var lastAnswer = task.info.last_answer; |
260 | + var hasLastAnswer = typeof lastAnswer != 'undefined'; | ||
258 | if (hasLastAnswer | 261 | if (hasLastAnswer |
259 | - && typeof last_answer.upload_session_id != 'undefined') { | ||
260 | - blend_link = uploadsUrl + last_answer.upload_session_id + '/' | ||
261 | - + sign_name + '.blend'; | ||
262 | - avatar_vid_link = uploadsUrl + last_answer.upload_session_id + '/' | ||
263 | - + sign_name + '.webm'; | 262 | + && typeof lastAnswer.upload_session_id != 'undefined') { |
263 | + blendLink = uploadsUrl + lastAnswer.upload_session_id + '/' | ||
264 | + + signName + '.blend'; | ||
265 | + baseAvatarVidUrl = uploadsUrl + lastAnswer.upload_session_id + '/' | ||
266 | + + signName; | ||
267 | + avatarVidUrl = baseAvatarVidUrl + '.webm'; | ||
264 | $('#last-edit-date').text( | 268 | $('#last-edit-date').text( |
265 | - moment(last_answer.last_edit_date).format('DD/MM/YYYY')); | ||
266 | - $('#number-of-fixes').text(last_answer.number_of_fixes); | 269 | + moment(lastAnswer.last_edit_date).format('DD/MM/YYYY')); |
270 | + $('#number-of-fixes').text(lastAnswer.number_of_fixes); | ||
267 | _showApprovalGUI(task, deferred); | 271 | _showApprovalGUI(task, deferred); |
268 | } | 272 | } |
269 | - $('#blend-link').attr('href', blend_link); | ||
270 | - $('#avatar-video').attr('src', avatar_vid_link); | 273 | + $('#blend-link').attr('href', blendLink); |
274 | + $('#avatar-video').html(videoHelper.getSource(baseAvatarVidUrl)); | ||
271 | } | 275 | } |
272 | 276 | ||
273 | function _loadMainComponents() { | 277 | function _loadMainComponents() { |
@@ -0,0 +1,31 @@ | @@ -0,0 +1,31 @@ | ||
1 | +(function(videoHelper, $, undefined) { | ||
2 | + | ||
3 | + function _getSource(videoBaseUrl) { | ||
4 | + return '<source src="' + videoBaseUrl + '.webm" type="video/webm">' | ||
5 | + + '<source src="' + videoBaseUrl | ||
6 | + + '.mp4" type="video/mp4">Sem suporte a vídeos'; | ||
7 | + } | ||
8 | + | ||
9 | + function _controlVideo(elId, toPlay) { | ||
10 | + if ($(elId).length === 0) | ||
11 | + return; | ||
12 | + if (toPlay) { | ||
13 | + $(elId).get(0).play(); | ||
14 | + } else { | ||
15 | + $(elId).get(0).pause(); | ||
16 | + } | ||
17 | + } | ||
18 | + | ||
19 | + videoHelper.play = function(elId) { | ||
20 | + _controlVideo(elId, true); | ||
21 | + }; | ||
22 | + | ||
23 | + videoHelper.pause = function(elId) { | ||
24 | + _controlVideo(elId, false); | ||
25 | + }; | ||
26 | + | ||
27 | + videoHelper.getSource = function(videoBaseUrl) { | ||
28 | + return _getSource(videoBaseUrl); | ||
29 | + }; | ||
30 | + | ||
31 | +}(window.videoHelper = window.videoHelper || {}, jQuery)); |
view/templates/index.html
@@ -7,6 +7,7 @@ | @@ -7,6 +7,7 @@ | ||
7 | <script src="{{ server }}/js/external-libs/js.cookie.js"></script> | 7 | <script src="{{ server }}/js/external-libs/js.cookie.js"></script> |
8 | <script src="{{ server }}/js/helpers/pybossa-api-helper.js"></script> | 8 | <script src="{{ server }}/js/helpers/pybossa-api-helper.js"></script> |
9 | <script src="{{ server }}/js/helpers/load-html-helper.js"></script> | 9 | <script src="{{ server }}/js/helpers/load-html-helper.js"></script> |
10 | +<script src="{{ server }}/js/helpers/video-helper.js"></script> | ||
10 | <script src="{{ server }}/js/ranking.js"></script> | 11 | <script src="{{ server }}/js/ranking.js"></script> |
11 | <script src="{{ server }}/js/corretor.js"></script> | 12 | <script src="{{ server }}/js/corretor.js"></script> |
12 | 13 | ||
@@ -69,10 +70,9 @@ | @@ -69,10 +70,9 @@ | ||
69 | ANIMAÇÃO ATUAL "<span class="sign-label"></span>": | 70 | ANIMAÇÃO ATUAL "<span class="sign-label"></span>": |
70 | </h6> | 71 | </h6> |
71 | </div> | 72 | </div> |
72 | - <div class="row video-container"> | ||
73 | - <video id="avatar-video" src="" preload="metadata" | 73 | + <div class="row video-container"> |
74 | + <video id="avatar-video" preload="metadata" | ||
74 | class="video-body" autoplay loop controls> | 75 | class="video-body" autoplay loop controls> |
75 | - <source type="video/webm"> | ||
76 | </video> | 76 | </video> |
77 | </div> | 77 | </div> |
78 | <div class="row link-container"> | 78 | <div class="row link-container"> |
@@ -111,9 +111,8 @@ | @@ -111,9 +111,8 @@ | ||
111 | </h6> | 111 | </h6> |
112 | </div> | 112 | </div> |
113 | <div class="row video-container"> | 113 | <div class="row video-container"> |
114 | - <video id="ref-video" src="" preload="metadata" class="video-body" | 114 | + <video id="ref-video" preload="metadata" class="video-body" |
115 | autoplay loop controls> | 115 | autoplay loop controls> |
116 | - <source type="video/webm"> | ||
117 | </video> | 116 | </video> |
118 | </div> | 117 | </div> |
119 | <div class="row link-container"> | 118 | <div class="row link-container"> |