наложение .png без потери прозрачности .mov с помощью FFMPEG

410
drexdelta

Я пытаюсь наложить. png (прозрачное изображение) закончено. MOV (прозрачное видео), используя этот блог . Я использую основные команды, как,

ffmpeg -i inputVideo.mov -i overlay.png -filter_complex "overlay = 100: 254" output.mov

ища решение, я нашел подобную проблему здесь, но он использует C #. Я ищу простую команду ffmpeg.

Я тоже нашел это . и нет решения :(. Спасибо.

РЕДАКТИРОВАТЬ 1: Добавлен вывод команды в соответствии с запросом.

ffmpeg version 4.0.2 Copyright (c) 2000-2018 the FFmpeg developers built with Apple LLVM version 9.1.0 (clang-902.0.39.1) configuration: --prefix=/usr/local/Cellar/ffmpeg/4.0.2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-gpl --enable-chromaprint --enable-ffplay --enable-frei0r --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfdk-aac --enable-libfontconfig --enable-libfreetype --enable-libgme --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopus --enable-librtmp --enable-librubberband --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtesseract --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg --enable-libzmq --enable-opencl --enable-videotoolbox --enable-openssl --enable-lzma --enable-libopenjpeg --disable-decoder=jpeg2000 --extra-cflags=-I/usr/local/Cellar/openjpeg/2.3.0/include/openjpeg-2.3 --enable-nonfree libavutil 56. 14.100 / 56. 14.100 libavcodec 58. 18.100 / 58. 18.100 libavformat 58. 12.100 / 58. 12.100 libavdevice 58. 3.100 / 58. 3.100 libavfilter 7. 16.100 / 7. 16.100 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 1.100 / 5. 1.100 libswresample 3. 1.100 / 3. 1.100 libpostproc 55. 1.100 / 55. 1.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'inputVideo.mov': Metadata: major_brand : qt minor_version : 512 compatible_brands: qt encoder : Lavf58.12.100 Duration: 00:00:04.02, start: 0.000000, bitrate: 35096 kb/s Stream #0:0(eng): Video: prores (ap4h / 0x68347061), yuva444p10le, 540x640, 35241 kb/s, 30 fps, 30 tbr, 15360 tbn, 15360 tbc (default) Metadata: handler_name : DataHandler encoder : Apple ProRes 4444 timecode : 00:00:00:00 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 2 kb/s (default) Metadata: handler_name : DataHandler Stream #0:2(eng): Data: none (tmcd / 0x64636D74), 0 kb/s Metadata: handler_name : DataHandler timecode : 00:00:00:00 Input #1, png_pipe, from 'overlay.png': Duration: N/A, bitrate: N/A Stream #1:0: Video: png, rgba(pc), 320x250 [SAR 2835:2835 DAR 32:25], 25 tbr, 25 tbn, 25 tbc 
1
Показать полный журнал из вашей команды. LordNeckbeard 5 лет назад 0
@LordNeckbeard, я думаю, вы искали версии ffmpeg и все такое. Я добавил это к вопросу. drexdelta 5 лет назад 0
Спасибо, но я также хотел видеть всю информацию, и поэтому я попросил полный журнал, но некоторые были опущены. В любом случае попробуйте `ffmpeg -i inputVideo.mov -i overlay.png -filter_complex" overlay = 100: 254: format = auto "-c: v prores_ks output.mov`. Просмотрите журнал и убедитесь, что он выводит формат пикселя `yuva444p10le`. LordNeckbeard 5 лет назад 0
Спасибо, это сработало. Можете ли вы написать ответ, чтобы я мог зеленый его :). drexdelta 5 лет назад 0
Конечно. Добавлено с некоторыми незначительными изменениями. Я не был уверен, сработает ли это для вас, когда я написал ответ, поскольку сам не смог его попробовать. LordNeckbeard 5 лет назад 0
У меня небольшая проблема :(. Когда я запускаю эту команду на моем MACbook Pro. Она работала довольно хорошо. Теперь я пытаюсь сгенерировать образ докера ubuntu. И пытаюсь запустить эту команду на докере. Я получаю сообщение об ошибке в ссылке :(. Любая идея, почему я не могу найти этот конкретный фильтр? ... https://www.ideone.com/A8Ffgj. drexdelta 5 лет назад 0
Я просто устанавливаю ffmpeg с помощью apt-get с помощью команды "" "apt install -y ffmpeg" "" drexdelta 5 лет назад 0
Ветвь релиза FFmpeg 3.2 от 2016-10-26, но `format = auto` была добавлена ​​2017-06-24. Удалите эту опцию или обновите `ffmpeg`. LordNeckbeard 5 лет назад 0
Хорошо. Я посмотрю, работает ли оверлей без этого флага. в противном случае я обновлю свой ffmpeg. Спасибо за быстрый ответ :). drexdelta 5 лет назад 0
Или измените `auto` на` yuv444`. LordNeckbeard 5 лет назад 0

1 ответ на вопрос

0
LordNeckbeard

Формат по умолчанию для MOV - H.264 (если кодер доступен), который не поддерживает альфа-канал, поэтому вам нужно вручную указать ProRes, если вы хотите сохранить этот формат.

Есть два кодера ProRes: prores_awи prores_ks, но prores_ksподдерживает только альфа. Смотрите ffmpeg -encodersи ffmpeg -h encoder=prores_ksдля получения дополнительной информации.

Пример команды

ffmpeg -i inputVideo.mov -i overlay.png -filter_complex "overlay=100:-1:format=auto" -c:v prores_ks -c:a copy output.mov 

Проверка вывода

Просмотрите журнал во время кодирования и убедитесь, что он выводит yuva444p10leформат пикселей, например:

Stream #0:0: Video: prores (prores_ks) (ap4h / 0x68347061), yuva444p10le, 1280x720 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 fps, 12800 tbn, 25 tbc 

Похожие вопросы