ffmpeg prores с альфа-каналом в webm vp9 отображает серый цвет

Пытался преобразовать видео, закодированное в ProRes 4444HQ, в webm vp9. Я создал пример видео с 50% прозрачным квадратом. Должно получиться так:

чего я хочу

но это выглядит так:

что я получаю

Вот как я конвертирую видео:

ffmpeg -i square.mov -c: v libvpx-vp9 -b: v 0 -crf 31 square.webm

Я пробовал менять цветовые пространства и выбирать разные профили, но не могу избавиться от серой тени. Это как-то связано с преобразованием ювы в rgba?


person Castles    schedule 23.01.2018    source источник
comment
Как вы проверяете ввод и вывод? Вы можете поделиться источником?   -  person Gyan    schedule 23.01.2018
comment
Я загружаю webm в Chrome и меняю фон, проверяя страницу. Я могу предварительно просмотреть версию Prores в Quicklook. Вот мой источник тестирования: dropbox.com/s/fgsk53rh7wqqkbt/original. mov? dl = 0   -  person Castles    schedule 23.01.2018
comment
Кажется, проблема с одним из ваших игроков - возможно, Quicklook: с ffplay обе команды производят одинаковый результат - ffplay original.mov -vf scale=alphablend=checkerboard,format=yuv420p и ffplay -vcodec libvpx-vp9 -i square.webm -vf scale=alphablend=checkerboard,format=yuv420p   -  person Gyan    schedule 23.01.2018
comment
Одна из возможностей состоит в том, что браузер ожидает предварительно умноженных пикселей - проверьте, запустив ffmpeg -i square.mov -vf premultiply=inplace=1 -c:v libvpx-vp9 -b:v 0 -crf 31 square-premult.webm   -  person Gyan    schedule 23.01.2018
comment
Кажется, что это по-прежнему дает тот же результат. Я только что экспортировал кадр из Motion как PNG, и вот результат: dropbox.com/s/4nkuuxaumybc327/default-canvas-settings.png?dl=0 Кажется, экспорт идет нормально, может быть, это как-то связано с форматом ProRes?   -  person Castles    schedule 23.01.2018
comment
Измените умножение с умножением на без умножения в моей команде.   -  person Gyan    schedule 23.01.2018
comment
Ааа. Вот и все!   -  person Castles    schedule 23.01.2018


Ответы (1)


Похоже, что ProReS имеет предварительно умноженные пиксели, а MOV от Motion установил флаг в MOV, указывающий на это, но WebM не имеет / не может, поэтому браузер не компенсирует.

Бег

ffmpeg -i square.mov -vf unpremultiply=inplace=1 -c:v libvpx-vp9 -b:v 0 -crf 31 square-premult.webm

должен создавать WebM с прямыми пикселями, правильно обрабатываемыми браузером.

person Gyan    schedule 23.01.2018