Enable rear camera with HTML5

前端 未结 5 1693
失恋的感觉
失恋的感觉 2020-11-28 03:02

I\'m working on a project with MVC ASP.Net 4 HTML5 (default browser is google-chrome v29.0.1547.57) I can interact with these tools and take photographs but only with front

5条回答
  •  渐次进展
    2020-11-28 03:29

    Last time i developped that code, soo here is the version which i use : you call directly the function whichCamera in your code and you specefic which camera "user","environment" or "computer"'if you are runing in a computer)

    `//----------------------------------------------------------------------
    //  whichCamera(Type)
    //    For smartphone or tablet :
    //     Start the type={user,environment} camera.
    //    For computer it's simple :
    //      type = "computer".
    //----------------------------------------------------------------------
    var streamSrc, cameraType;
    function whichCamera(type){
    
      var cameraFacing;
      cameraType = type;
      if( type == "user")
        cameraFacing = 0;
      else if( type == "environment")
        cameraFacing = 1;
      else if( type == "computer"){
        cameraFacing = 2;
      }
      console.log(type+" index : "+cameraFacing);
    
      //  Here we list all media devices, in order to choose between
      //  the front and the rear camera.
      //      videoDevices[0] : user Camera
      //      videoDevices[1] : environment Camera
      //  Then set the video resolution.
      navigator.mediaDevices.enumerateDevices()
      .then(devices => {
        var videoDevices, videoDeviceIndex, constraints;
        //  Initialize the array wich will contain all video resources IDs.
        //  Most of devices have two video resources (Front & Rear Camera).
        videoDevices = [0,0];
        //  Simple index to browse the videa resources array (videoDevices).
        videoDeviceIndex = 0;
        //  devices.forEach(), this function will detect all media resources (Audio, Video) of the device
        //  where we run the application.
        devices.forEach(function(device) {
          console.log(device.kind + ": " + device.label +
            " id = " + device.deviceId);
          // If the kind of the media resource is video,
          if (device.kind == "videoinput") {
            //  then we save it on the array videoDevices.
            videoDevices[videoDeviceIndex++] =  device.deviceId;
            console.log(device.deviceId+" = "+videoDevices[videoDeviceIndex-1]);
          }
        });
        console.log("Camera facing ="+cameraFacing+" ID = "+videoDevices[videoDeviceIndex-1]);
    
        // Here we specified which camera we start,
        //  videoDevices[0] : Front Camera
        //  videoDevices[1] : Back Camera
        if( cameraFacing != "computer"){
          constraints = { deviceId: { exact: videoDevices[cameraFacing]  }};
          return navigator.mediaDevices.getUserMedia({ video:
                                                              constraints,
                                                              width: { min: 1280, ideal: 1600, max: 1920 },
                                                              height: { min: 720, ideal: 1200, max: 1080 }
                                                      }
                                                    );
        }else
          return navigator.mediaDevices.getUserMedia({ video: true });
        })
        //  Then we retrieve the link to the video stream.
        .then(stream => {
          if (window.webkitURL) {
            video.src = window.webkitURL.createObjectURL(stream);
            localMediaStream = stream;
            console.log(localMediaStream +" = "+ stream)
          } else if (video.mozSrcObject !== undefined) {
            video.mozSrcObject = stream;
            console.log(video.mozSrcObject +" = "+ stream)
          } else if (video.srcObject !== undefined) {
            video.srcObject = stream;
            console.log(video.srcObject +" = "+ stream)
          } else {
            video.src = stream;
            console.log(video.src +" = "+ stream)
          }
          streamSrc = stream;
        })
        .catch(e => console.error(e));
    
    }
    

提交回复
热议问题