2016-09-20 11 views
3

Ich versuche, ein png Wasserzeichen (mit Alpha-Kanal) über h264 Video mit semi-transparent hinzuzufügen. Mit dem Overlay-Filter konnte ich dem Video Wasserzeichen hinzufügen.ffmpeg add Semi transparentes Wasserzeichen (Png) mit unterschiedlicher Größe

ffmpeg -y -i input.mp4 -i watermark.png -filter_complex "[0][1] overlay=0:0" -c:v libx264 -an output.mp4 

Aber Overlay-Filter bietet keine transparente Option. Also habe ich versucht, Mischfilter zu verwenden. Wenn ich jedoch die Ursprungsauflösung verwende, erscheint eine Fehlermeldung.

ffmpeg -y -i input.mp4 -i watermark.png -filter_complex "[0][1]blend=all_mode=overlay:all_opacity=0.3" -c:v libx264 -an output.mp4 

Ausgang:

libavutil  55. 28.100/55. 28.100 
    libavcodec  57. 48.101/57. 48.101 
    libavformat 57. 41.100/57. 41.100 
    libavdevice 57. 0.101/57. 0.101 
    libavfilter  6. 47.100/6. 47.100 
    libavresample 3. 0. 0/3. 0. 0 
    libswscale  4. 1.100/4. 1.100 
    libswresample 2. 1.100/2. 1.100 
    libpostproc 54. 0.100/54. 0.100 
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4': 
    Metadata: 
    major_brand  : isom 
    minor_version : 512 
    compatible_brands: isomiso2avc1mp41 
    encoder   : Lavf57.41.100 
    Duration: 00:00:45.08, start: 0.000000, bitrate: 1872 kb/s 
    Stream #0:0(und): Video: h264 (Baseline) (avc1/0x31637661), yuv420p, 1920x1080, 1869 kb/s, 29.72 fps, 30 tbr, 16k tbn, 32k tbc (default) 
    Metadata: 
     handler_name : VideoHandler 
Input #1, png_pipe, from 'watermark.png': 
    Duration: N/A, bitrate: N/A 
    Stream #1:0: Video: png, rgba(pc), 64x64, 25 tbr, 25 tbn, 25 tbc 
[Parsed_blend_0 @ 00750600] First input link top parameters (size 1920x1080, SAR 0:1) do not match the corresponding second input link bottom parameters (64x64, SAR 0:1) 
[Parsed_blend_0 @ 00750600] Failed to configure output pad on Parsed_blend_0 
Error configuring complex filters. 
Invalid argument 

Das Ergebnis sieht aus wie eine Auflösung Problem mit den Parametern. So habe ich versucht, das Wasserzeichen vor dem Mischen zu skalieren.

ffmpeg -y -i input.mp4 -i watermark.png -filter_complex "[0:0]scale=1920x1080[a]; [1:0]scale=1920x1080[b]; [a][b]blend=all_mode=overlay:all_opacity=0.3" -c:v libx264 -an output.mp4 

FFMPEG arbeitet mit diesen Parametern. Aber die Ausgabe wurde nicht erwartet, weil das Wasserzeichen gestreckt wurde. Irgendeine Idee, Wasserzeichen mit unterschiedlicher Auflösung zu mischen, ohne zu Video mit Transparenz zu dehnen?

Hier sind die Testdatei. (Ffmpeg Version 3.1.2) https://drive.google.com/open?id=0B2X3VLS01TogdHVJZ2I1ZC1GUUU https://drive.google.com/open?id=0B2X3VLS01TogbjhuZTlBOFFpN1k

+0

Für andere Opazität meiner Overlay Wasserzeichen zu reduzieren, ich bearbeitet gerade die .png, reduziert auf 50% Opazität, erneut gespeichert als PNG und verwendet das. Hat super funktioniert –

Antwort

3

Verwenden Sie die lut Filter vor Overlay

ffmpeg -y -i input.mp4 -i watermark.png -filter_complex 
      "[1]lut=a=val*0.3[a];[0][a]overlay=0:0" 
     -c:v libx264 -an output.mp4 
+0

Vielen Dank. Das hilft mir wirklich. – Archer

Verwandte Themen