Commit 9bb0f00970848b97d4f688162819069329433b07
1 parent
af9913c2
Exists in
master
and in
4 other branches
Create watemark function on renderer
Showing
1 changed file
with
40 additions
and
3 deletions
Show diff stats
core/renderer.py
@@ -12,6 +12,7 @@ Author: Wesnydy Lima Ribeiro | @@ -12,6 +12,7 @@ Author: Wesnydy Lima Ribeiro | ||
12 | E-Mail: wesnydy@lavid.ufpb.br | 12 | E-Mail: wesnydy@lavid.ufpb.br |
13 | """ | 13 | """ |
14 | 14 | ||
15 | +import ffmpy | ||
15 | import json | 16 | import json |
16 | import os | 17 | import os |
17 | import pika | 18 | import pika |
@@ -68,7 +69,7 @@ def start_video_creator(id): | @@ -68,7 +69,7 @@ def start_video_creator(id): | ||
68 | [ | 69 | [ |
69 | VIDEO_CREATOR, | 70 | VIDEO_CREATOR, |
70 | id, | 71 | id, |
71 | - "0", | 72 | + "1", |
72 | "30", | 73 | "30", |
73 | "20", | 74 | "20", |
74 | "25", | 75 | "25", |
@@ -92,8 +93,8 @@ def start_ffmpeg(id): | @@ -92,8 +93,8 @@ def start_ffmpeg(id): | ||
92 | Identification of request. | 93 | Identification of request. |
93 | """ | 94 | """ |
94 | global ffmpeg, display, libras_video | 95 | global ffmpeg, display, libras_video |
95 | - # logger.info("Starting ffmpeg") | ||
96 | - libras_video = os.path.join(PATH_LIBRAS, id + ".mp4") | 96 | + # 'vl.mp4' sufix to distinguish from video with watermark |
97 | + libras_video = os.path.join(PATH_LIBRAS, id + "vl.mp4") | ||
97 | ffmpeg = subprocess.Popen( | 98 | ffmpeg = subprocess.Popen( |
98 | [ | 99 | [ |
99 | "ffmpeg", | 100 | "ffmpeg", |
@@ -162,11 +163,14 @@ def run(ch, method, properties, body): | @@ -162,11 +163,14 @@ def run(ch, method, properties, body): | ||
162 | """ | 163 | """ |
163 | global worker_available | 164 | global worker_available |
164 | 165 | ||
166 | + print ("Rendering...") | ||
165 | if worker_available: | 167 | if worker_available: |
166 | worker_available = False | 168 | worker_available = False |
167 | start_new_thread(send_to_video_creator, (properties.correlation_id, body)) | 169 | start_new_thread(send_to_video_creator, (properties.correlation_id, body)) |
168 | start_video_creator(properties.correlation_id) | 170 | start_video_creator(properties.correlation_id) |
169 | 171 | ||
172 | + final_video = os.path.join(PATH_LIBRAS, properties.correlation_id+".mp4") | ||
173 | + watermark(libras_video, final_video, "Vídeo gerado automaticamente pelo usuário") | ||
170 | try: | 174 | try: |
171 | filesize = os.path.getsize(libras_video) | 175 | filesize = os.path.getsize(libras_video) |
172 | except: | 176 | except: |
@@ -179,12 +183,45 @@ def run(ch, method, properties, body): | @@ -179,12 +183,45 @@ def run(ch, method, properties, body): | ||
179 | 183 | ||
180 | clean(properties.correlation_id) | 184 | clean(properties.correlation_id) |
181 | worker_available = True | 185 | worker_available = True |
186 | + print ("Ok") | ||
182 | else: | 187 | else: |
183 | ch.basic_reject(delivery_tag=method.delivery_tag, requeue=True) | 188 | ch.basic_reject(delivery_tag=method.delivery_tag, requeue=True) |
184 | 189 | ||
190 | +# Post processor functions | ||
191 | +def watermark(input_video, output_video, text): | ||
192 | + fontfile = "/usr/share/fonts/truetype/freefont/FreeSans.ttf" | ||
193 | + | ||
194 | + filter_graph = ','.join( | ||
195 | + [ | ||
196 | + "mpdecimate", | ||
197 | + "setpts=N/FRAME_RATE/TB", | ||
198 | + "drawbox=y=ih-208:color=black@0.4:width=iw:height=48:t=max", | ||
199 | + "drawtext=fontfile="+fontfile+":text="+text+":fontcolor=white@0.8:fontsize=36:y=h-200:x=w/10*mod(t\,10)" | ||
200 | + ] | ||
201 | + ) | ||
202 | + | ||
203 | + ffmpeg = ffmpy.FFmpeg( | ||
204 | + inputs = { input_video: None }, | ||
205 | + outputs = { | ||
206 | + output_video: [ | ||
207 | + "-loglevel", "error", | ||
208 | + "-vf", filter_graph, | ||
209 | + "-ss", "0.03", | ||
210 | + "-c:v", "libx264", | ||
211 | + "-movflags", "+faststart", | ||
212 | + "-y" | ||
213 | + ] | ||
214 | + } | ||
215 | + ) | ||
216 | + try: | ||
217 | + ffmpeg.run() | ||
218 | + except: | ||
219 | + print "FFmpeg retuned with a non-zero exit code. Watermark error." | ||
220 | + | ||
185 | #Temporary | 221 | #Temporary |
186 | def clean(id): | 222 | def clean(id): |
187 | # logger.info("Cleaning screens files") | 223 | # logger.info("Cleaning screens files") |
224 | + os.remove(libras_video) | ||
188 | path = os.path.join(PATH_FRAMES, id) | 225 | path = os.path.join(PATH_FRAMES, id) |
189 | rmtree(path, ignore_errors=True) | 226 | rmtree(path, ignore_errors=True) |
190 | 227 |