ffmpeg - Як накласти PNG на інший PNG?


1

У мене PNG A з альфа-шаром, який я хочу накласти поверх іншої PNG B. Як мені це зробити ffmpeg?

я намагався ffmpeg -i A.png -i B -filter_complex "[0:v][1:v] overlay=0:0" out.png, але я тільки бачу B.

Тут виводиться команда.

> frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
> speed=0.0883x video:2169kB audio:0kB subtitle:0kB other streams:0kB
> global headers:0kB muxing overhead: unknown ffmpeg version
> N-83044-g2a293ec Copyright (c) 2000-2017 the FFmpeg developers   built
> with gcc 4.8 (Ubuntu 4.8.4-2ubuntu1~14.04.3)   configuration:
> --prefix=/data/local/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/data/local/ffmpeg_build/include
> --extra-ldflags=-L/data/local/ffmpeg_build/lib --bindir=/data/local/bin --enable-gpl --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree   libavutil      55. 43.100 / 55. 43.100   libavcodec     57. 72.100 / 57. 72.100   libavformat    57. 62.100 / 57. 62.100   libavdevice    57.  2.100 / 57.  2.100   libavfilter     6. 68.100 / 
> 6. 68.100   libswscale      4.  3.101 /  4.  3.101   libswresample   2.  4.100 /  2.  4.100   libpostproc    54.  2.100 / 54.  2.100 Input #0, png_pipe, from '/data/output/067_90.png':
> Duration: N/A, bitrate: N/A
>     Stream #0:0: Video: png, rgba(pc), 2560x1440, 25 tbr, 25 tbn, 25 tbc Output #0, image2, to
> '/data/output/067_90_down2.png':
> Metadata:
>     encoder         : Lavf57.62.100
>     Stream #0:0: Video: png, rgba, 1280x720, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc
>     Metadata:
>       encoder         : Lavc57.72.100 png Stream mapping:   Stream #0:0 -> #0:0 (png (native) -> png (native)) Press [q] to stop, [?] for help frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
> speed=0.163x video:134kB audio:0kB subtitle:0kB other streams:0kB
> global headers:0kB muxing overhead: unknown

Працює для мене. Показати повну консольну команду.
llogan

@LordNeckbeard Будь ласка, див. Дякую!
Sibbs Gambling

Відповіді:


2

Якщо потрібно накласти A поверх B, потрібно перемкнути порядок введення файлу або порядок накладання накладення.

ffmpeg -i B.png -i A.png -filter_complex "[1]scale=iw/2:-1[b];[0:v][b] overlay" out.png

Спасибі, але я просто намагався, все одно безрезультатно. :-(
Sibbs Gambling

1
Ви можете додати -report і запустити мою команду? Посилання на згенерований звіт.
Gyan

Ось так -- s000.tinyupload.com/index.php?file_id=71172992522639780031 . Ще раз дякуємо за вашу допомогу!
Sibbs Gambling

Ви хочете, щоб 065_0 був на вершині 065?
Gyan

2
Ваше накладене зображення вдвічі перевищує розмір базового зображення, тому я вставив фільтр масштабування, щоб зменшити його. [1] є коротким для "вибрати найкращий відповідний потік" ( [1:v] є коротким для вибору найкращого відповідного відеопотоку - те саме в цьому випадку) і [b] є міткою для виведення шкали, яка потім подається на накладення.
Gyan

0

Вкажіть кодек і наприклад, формат, що підтримує альфа -c:v png -pix_fmt rgba. Щоб побачити, які кодеки у вас є, ffmpeg -codecs. Щоб дізнатися, які формати у вас є, ffmpeg -pix_fmts.


Дякую, але я додав два варіанти, але він все ще не працює.
Sibbs Gambling
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.