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 | 4 | import os |
5 | 5 | import subprocess |
6 | 6 | import pyutil |
7 | +import shutil | |
7 | 8 | |
8 | 9 | getcwd=os.path.dirname(os.path.abspath(__file__)) |
9 | 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 | 56 | pyutil.log("Blend file not exists", 4) |
56 | 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 | 60 | if (file_exists(blend_file)): |
60 | 61 | if not ((isinstance(upload_dir, str) and isinstance(blend_file, str)) or |
61 | 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 | 64 | pyutil.log("Args to render_video no match types", 4) |
64 | 65 | return 1 |
65 | 66 | try: |
66 | - json_object= json.JSONEncoder().encode( | |
67 | + json_object = json.JSONEncoder().encode( | |
67 | 68 | { |
68 | 69 | "upload_dir": upload_dir, |
69 | 70 | "sign_name": sign_name |
70 | 71 | } |
71 | 72 | ) |
72 | 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 | 76 | else: |
76 | 77 | result_code=subprocess.call(['blender', '-b', blend_file, '-noaudio', '-P', bpy_script_render, "--", json_object]) |
77 | 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 | 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 | 88 | if (rm_original_video): |
82 | 89 | subprocess.call(["rm", video_mp4]) |
83 | 90 | if (result_code == 4): | ... | ... |
view/js/corretor.js
... | ... | @@ -148,10 +148,10 @@ |
148 | 148 | |
149 | 149 | function _createAnswer(task, status) { |
150 | 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 | 153 | if (hasLastAnswer) { |
154 | - answer = last_answer; | |
154 | + answer = lastAnswer; | |
155 | 155 | } else { |
156 | 156 | answer = { |
157 | 157 | 'number_of_fixes' : 0, |
... | ... | @@ -194,9 +194,9 @@ |
194 | 194 | |
195 | 195 | function _finishTask(task, deferred, answer) { |
196 | 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 | 200 | : uploadSessionId; |
201 | 201 | $.ajax({ |
202 | 202 | type : 'POST', |
... | ... | @@ -243,31 +243,35 @@ |
243 | 243 | |
244 | 244 | function _loadTaskInfo(task, deferred) { |
245 | 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 | 254 | $('#submission-date').text( |
252 | 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 | 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 | 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 | 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 | 277 | function _loadMainComponents() { | ... | ... |
... | ... | @@ -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 | 7 | <script src="{{ server }}/js/external-libs/js.cookie.js"></script> |
8 | 8 | <script src="{{ server }}/js/helpers/pybossa-api-helper.js"></script> |
9 | 9 | <script src="{{ server }}/js/helpers/load-html-helper.js"></script> |
10 | +<script src="{{ server }}/js/helpers/video-helper.js"></script> | |
10 | 11 | <script src="{{ server }}/js/ranking.js"></script> |
11 | 12 | <script src="{{ server }}/js/corretor.js"></script> |
12 | 13 | |
... | ... | @@ -69,10 +70,9 @@ |
69 | 70 | ANIMAÇÃO ATUAL "<span class="sign-label"></span>": |
70 | 71 | </h6> |
71 | 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 | 75 | class="video-body" autoplay loop controls> |
75 | - <source type="video/webm"> | |
76 | 76 | </video> |
77 | 77 | </div> |
78 | 78 | <div class="row link-container"> |
... | ... | @@ -111,9 +111,8 @@ |
111 | 111 | </h6> |
112 | 112 | </div> |
113 | 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 | 115 | autoplay loop controls> |
116 | - <source type="video/webm"> | |
117 | 116 | </video> |
118 | 117 | </div> |
119 | 118 | <div class="row link-container"> | ... | ... |