Primefaces 6.2 PhotoCam - ошибки веб-камеры с Firefox / Safari - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь работать с PhotoCam Primeface (версия 6.2) и, используя пример из их витрины, камера не работает для меня на Firefox (Developer Edition 63.0b13) или Safari версии 12 .. и не работаетв Safari и на мобильном устройстве (мобильное устройство на iOS12).

Он развернут на сайте с https и работает в Chrome как на настольном, так и на мобильном браузере.

Я сейчас использую демонстрационную демонстрацию, найденную здесь (код также выложен ниже):

https://www.primefaces.org/showcase/ui/multimedia/photoCam.xhtml

Я даже зашел так далекоКак загрузить файл витрины и попробовать эту версию, без изменений в успехе.

Может кто-нибудь помочь, пожалуйста?

Что происходит?

В Firefox:

  • Я получаю приглашение разрешить доступ к камере, нажимаю кнопку ОК.
  • Я получаю приглашение запустить Adobe Flash, я согласен.
  • После принятия обоих, «коробка» камеры просто белого цвета.
  • Когда я нажимаю на Capture, я получаю сообщение об ошибке «Ошибка Webcam.js: веб-камера еще не загружена».
  • ПРИМЕЧАНИЕ. Консоль возвращает «недостижимый код после оператора возврата [Подробнее]» при загрузке страницы, но после принятия двух запросов дополнительные сообщения не отображаются.

В Safari:

  • Я получаю приглашение разрешить доступ к камере, нажимаю кнопку ОК.
  • Я получаю сообщение об ошибке "Ошибка веб-камеры.js: не удается получить доступ к веб-камере: Ошибка типа: Ошибка типа Ошибка типа: Ошибка типа"

В Safari на мобильном устройстве:

  • Я получаю сообщение об ошибке "Ошибка веб-камеры.js: Не удалось получить доступ к веб-камере: Ошибка: недопустимое ограничение Ошибка: недопустимое ограничение"

Вот код HTML:

<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
            xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
            xmlns:p="http://primefaces.org/ui" template="/common/template.xhtml">
<ui:define name="title">PhotoCam</ui:define>
<ui:define name="content">
    <h:form>
        <h:panelGrid columns="3" cellpadding="5">
            <p:photoCam widgetVar="pc" listener="#{photoCamView.oncapture}" update="photo"/>
            <p:commandButton type="button" value="Capture" onclick="PF('pc').capture()"/>
            <p:outputPanel id="photo">
                <p:graphicImage name="demo/images/photocam/#{photoCamView.filename}.jpeg"
                                rendered="#{not empty photoCamView.filename}"/>
            </p:outputPanel>
        </h:panelGrid>
    </h:form>
</ui:define>

Вот класс Java

public class PhotoCamView {

private String filename;

private String getRandomImageName() {
    int i = (int) (Math.random() * 10000000);

    return String.valueOf(i);
}

public String getFilename() {
    return filename;
}

public void oncapture(CaptureEvent captureEvent) {
    filename = getRandomImageName();
    byte[] data = captureEvent.getData();

    ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext();
    String newFileName = externalContext.getRealPath("") + File.separator + "resources" + File.separator + "demo" +
                                File.separator + "images" + File.separator + "photocam" + File.separator + filename + ".jpeg";

    FileImageOutputStream imageOutput;
    try {
        imageOutput = new FileImageOutputStream(new File(newFileName));
        imageOutput.write(data, 0, data.length);
        imageOutput.close();
    }
    catch(IOException e) {
        throw new FacesException("Error in writing captured image.", e);
    }
}}

Я ценю любую помощь в этом.

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

Кристина

Ответы [ 2 ]

0 голосов
/ 16 декабря 2018

Просто скачайте webcam.js с Github и поместите его в папку xhtml.Затем добавьте <script type="text/javascript" src="webcam.js"></script> в ваш файл xhtml

0 голосов
/ 14 октября 2018

Я только недавно обновил Photocam до последней версии своего плагина JS, а также исправил аналогичную ошибку для IE11.Смотрите здесь:

https://github.com/primefaces/primefaces/issues/4094

https://github.com/primefaces/primefaces/issues/3755

Я настоятельно рекомендую попробовать версию PrimeFaces 6.3-SNAPSHOT из GitHub и сообщить нам, исправлена ​​ли эта последняя версияваши проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...