1. navigator.getUserMedia 로 비디오 촬영하기 

  자바 스크립트 비디오 촬영 코드는 다음과 같습니다.

<body>
	<video id="test-video" width="200" height="200" autoplay loop muted></video>
</body>

<script>
	//Polyfill 
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
    
    //Video
    var video = document.getElementById('test-video');
    navigator.getUserMedia({video:true, audio:false}, function(stream){
    	video.srcObject = stream;
        video.play();
	}, function(error){ 
    	//Error
	});
</script>


 

2. CSS를 활용한 미러 효과

    video 와 CSS 를 활용합니다.

<style>
	video{
    	transform: rotateY(180deg);
        -webkit-transform:rotateY(180deg); /* Safari and Chrome */
        -moz-transform:rotateY(180deg); /* Firefox */
	}
</style>



3. CANVAS를 활용한 거울 효과

    css 대신 scale과 translate를 이용하여 좌우를 반전 합니다.

<body>
	<video id="test-video" width="200" height="200" autoplay loop muted ></video>
	<canvas id="test-canvas" width="200" height="200"></canvas>
</body>

<script>
	//Polyfill
	navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;

	var video = document.getElementById('test-video');
	var canvas = document.getElementById('test-canvas');
	var context = canvas.getContext('2d');

	//Video
	navigator.getUserMedia({video:true, audio:false}, function(stream){
		video.srcObject = stream; video.play();
	}, function(error){
		//Error
	});

	//Canvas
	(function loop(){
		context.save();
		context.scale(-1, 1);
		context.translate(-200, 0);
		context.drawImage(video, 0, 0, 200, 200);
		context.restore();
		requestAnimationFrame(loop);
	})();
</script>

 

4. 끄기

    stream을 잘 받아 두어야합니다.

stream.getTracks().forEach(track => track.stop());

 

 

출처: https://forgiveall.tistory.com/501 [하하하하하]

+ Recent posts