Если вы откроете это видео с ваша демонстрация с QuickTime вы увидите видео с отдельными областями RGB и A:
Если вы затем посмотрите на код для демонстрации, вы увидите, что он использует один закадровый холст HTML5 для отрисовки каждого видеокадра, считывая альфа-пиксели из второй половины этого холста, чтобы установить явные значения альфа-канала для каждого пикселя в первую половину, а затем с помощью putImageData
переместите результат на другой холст HTML5, который фактически отображает видео.
function processFrame() {
buffer.drawImage(video, 0, 0);
var image = buffer.getImageData(0, 0, width, height),
imageData = image.data,
alphaData = buffer.getImageData(0, height, width, height).data;
for (var i=3, len=imageData.length; i<len; i += 4){
imageData[i] = alphaData[i-1];
}
output.putImageData(image, 0, 0, 0, 0, width, height);
}
В сочетании с различными заявлениями в Интернете о том, что H.264 не поддерживает альфа-канал, я почти уверен, что H.264 не может иметь альфа-канал. Я говорю это, потому что я нахожу несколько ссылок на эту цитату 2006 года с компьютера Apple относительно обновленного QuickTime в их версии Leopard OS X:
Сантехника QuickTime получает значительные обновления в Leopard. Были внесены значительные улучшения в обработку кодирования H.264. Кроме того, прозрачные альфа-слои, необязательная часть спецификации H.264, теперь поддерживаются в фильмах QuickTime на основе H.264. И, наконец, QuickTime поддерживает 64-разрядные версии.
Однако единственное, что я нашел, связанное с этой маркетинговой цитатой, это этот документ показывает, как изменить общую непрозрачность слоя видео в QuickTime Pro.
person
Phrogz
schedule
20.02.2011