patocolher commited on
Commit
579b783
Β·
verified Β·
1 Parent(s): 0590980

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +7 -8
app.py CHANGED
@@ -281,25 +281,23 @@ def reencode_video(
281
  if tem_logo:
282
  cmd += ["-i", logo_tmp]
283
 
284
- # ── filter_complex (IDÊNTICO ao LegendadorBrasileiroWhisperX) ───
 
 
285
  if tem_logo:
286
  overlay_pos = calcular_posicao_logo(
287
  logo_posicao, logo_margem, logo_offset_x, logo_offset_y
288
  )
289
- # Regra de ouro: NÃO forçar nenhum format= na cadeia. O overlay
290
- # do FFmpeg jΓ‘ lida com alpha PNG corretamente. ConversΓ΅es
291
- # explΓ­citas yuv420p↔rgba causam mismatch de matriz de cor
292
- # (BT.601/BT.709) e introduzem halo verde nas bordas.
293
  if vf_parts:
294
  fc = (
295
  f"[0:v]{','.join(vf_parts)}[base];"
296
  f"[1:v]scale={logo_width_px}:-1[logo];"
297
- f"[base][logo]overlay={overlay_pos}[vout]"
298
  )
299
  else:
300
  fc = (
301
  f"[1:v]scale={logo_width_px}:-1[logo];"
302
- f"[0:v][logo]overlay={overlay_pos}[vout]"
303
  )
304
  cmd += ["-filter_complex", fc, "-map", "[vout]"]
305
  if has_audio:
@@ -578,6 +576,7 @@ with gr.Blocks(title="Super Re-Encoder", theme=gr.themes.Soft(),
578
  with gr.Column(scale=1):
579
  logo_file = gr.Image(
580
  type="filepath",
 
581
  label="PNG com fundo transparente (recomendado)"
582
  )
583
  logo_preview = gr.Image(
@@ -652,4 +651,4 @@ with gr.Blocks(title="Super Re-Encoder", theme=gr.themes.Soft(),
652
  )
653
 
654
  demo.queue(max_size=5)
655
- demo.launch(server_name="0.0.0.0", server_port=7860)
 
281
  if tem_logo:
282
  cmd += ["-i", logo_tmp]
283
 
284
+ # ── filter_complex ──────────────────────────────────────────
285
+ # O overlay do FFmpeg precisa de format=auto para lidar
286
+ # corretamente com o canal alpha do PNG.
287
  if tem_logo:
288
  overlay_pos = calcular_posicao_logo(
289
  logo_posicao, logo_margem, logo_offset_x, logo_offset_y
290
  )
 
 
 
 
291
  if vf_parts:
292
  fc = (
293
  f"[0:v]{','.join(vf_parts)}[base];"
294
  f"[1:v]scale={logo_width_px}:-1[logo];"
295
+ f"[base][logo]overlay={overlay_pos}:format=auto[vout]"
296
  )
297
  else:
298
  fc = (
299
  f"[1:v]scale={logo_width_px}:-1[logo];"
300
+ f"[0:v][logo]overlay={overlay_pos}:format=auto[vout]"
301
  )
302
  cmd += ["-filter_complex", fc, "-map", "[vout]"]
303
  if has_audio:
 
576
  with gr.Column(scale=1):
577
  logo_file = gr.Image(
578
  type="filepath",
579
+ image_mode="RGBA",
580
  label="PNG com fundo transparente (recomendado)"
581
  )
582
  logo_preview = gr.Image(
 
651
  )
652
 
653
  demo.queue(max_size=5)
654
+ demo.launch(server_name="0.0.0.0", server_port=7860)