getUserMedia()
또는 WebRTC를 사용하는 경우 Chrome 45 이상에 맞게 코드를 조정해야 할 수 있습니다.
MediaStream API는 동기화된 미디어 스트림을 나타냅니다. 예를 들어 카메라 및 마이크 입력에서 가져온 스트림에는 동기화된 동영상 및 오디오 트랙이 있습니다. 각 트랙은 MediaStreamTrack으로 표현됩니다. <track> 요소와 혼동해서는 안 됩니다.
Chrome 45에서 세 가지 MediaStream
가 지원 중단됩니다.
MediaStream.ended
MediaStream.label
MediaStream.stop()
그와 동시에 다음 두 가지 사항이 추가됩니다.
MediaStream.active
MediaStreamTrack.stop()
다음과 같이 변경해야 합니다.
MediaStream.ended
가 아닌MediaStream
가 스트리밍 중인지 확인하려면MediaStream.active
를 사용합니다.- 스트리밍을 중지하려면
MediaStream.stop()
가 아닌MediaStreamTrack.stop()
를 사용하세요. MediaStream
의 고유 식별자가 필요하면MediaStream.label
대신MediaStream.id
를 사용하세요.MediaStreamTrack.label
는 스트림의 소스 기기에 사람이 읽을 수 있는 이름을 제공합니다(예: FaceTime HD 카메라(내장)(05ac:8510)).
실제 동작을 확인할 수 있습니다. 카메라가 있는 기기의 Chrome에서 simpl.info/gum을 열고 Chrome DevTools 콘솔을 확인합니다. 이 데모에서 getUserMedia()
콜백에 전달된 MediaStream 객체 stream
는 전역 범위 내에 있으므로 콘솔에서 검사할 수 있습니다. 이 스트림의 MediaStreamTrack
을 보려면 stream.getTracks()[0]
를 호출합니다.
Stop(), 종료 및 활성 상태
미디어 캡처 및 스트림 W3C 실무 그룹은 MediaStream
에 새 트랙을 추가할 때 발생하는 일과 빈 MediaStream
의 종료 여부에 관한 문제를 검토하면서 MediaStream
에 ended
를 구현할 적절한 방법이 없다는 사실을 깨달았습니다('다시 시작되지 않음'). HTML5의 다른 부분에서 '종료'는 '종료되었으며 재개되지 않음'을
의미합니다. '활성'에는 이러한 의미가 없습니다. 예를 들어 새 트랙이 추가되면 비활성 스트림이 다시 활성화될 수 있습니다. 실무 그룹에서는 혼란을 야기하는 속성과 기능을 유지하는 대신 이를 삭제하기로 했습니다.
다음은 'MediaStream.active'를 사용하여 스트림의 상태를 확인하는 방법의 예입니다.
var gumStream;
navigator.getUserMedia({audio: false, video: true},
function(stream) {
gumStream = stream;
// ...
},
function(error) {
console.log('getUserMedia() error', error);
});
// …
if (gumStream.active) {
// do something with the stream
}
MediaStream
에서 stop()
를 삭제해도 실제 기능은 삭제되지 않았습니다. 소스 기기를 분리하는 프로세스 등은 어차피 MediaStreamTrack
에서 실행되어야 합니다. 대신 MediaStreamTrack
에서 stop()
를 사용하세요.
navigator.getUserMedia({audio: false, video: true},
function(stream) {
// can also use getAudioTracks() or getVideoTracks()
var track = stream.getTracks()[0]; // if only one media track
// ...
track.stop();
},
function(error){
console.log('getUserMedia() error', error);
});
라벨
아무도 이 속성의 용도를 알 수 없었습니다.
MediaStream.label
가 사양의 첫 번째 버전에 추가되었지만 아무도 label
의 용도를 알지 못했습니다. 스트림이 RTCPeerConnection
를 통해 전송되었을 때 label
이 어떻게 되었는지도 불분명했습니다.
W3C 실무 그룹에서는 주도해 본 내용을 아무도 원하지 않아서 삭제했습니다.
반복하자면, MediaStream.id
는 MediaStream
의 고유 식별자를 제공하고 MediaStreamTrack.label
는 카메라 또는 마이크 유형과 같은 스트림 소스의 이름을 제공합니다.
MediaStream
및 MediaStreamTrack
에 관한 자세한 내용은 Mozilla Developer Network를 참조하세요. HTML5 Rocks는 오디오 및 동영상 캡처의 getUserMedia()
에 관한 훌륭한 소개를 제공합니다.
Google은 Chrome의 변경사항에 대해 의견을 보내주셔서 감사합니다. 여기와 여기에서 지원 중단으로 인한 버그를 확인하고 구현 인텐트에서 자세한 내용과 설명을 확인할 수 있습니다.