getUserMedia()
또는 WebRTC를 사용하는 경우 Chrome 45 이상용으로 코드를 조정해야 할 수 있습니다.
MediaStream API는 동기화된 미디어 스트림을 나타냅니다. 예를 들어 카메라 및 마이크 입력에서 가져온 스트림에는 동기화된 동영상 및 오디오 트랙이 있습니다. 각 트랙은 MediaStreamTrack으로 표시됩니다. (<track> 요소와 혼동하지 마세요.)
Chrome 45에는 세 가지 MediaStream
지원 중단이 있습니다.
MediaStream.ended
MediaStream.label
MediaStream.stop()
동시에 다음 두 가지가 추가됩니다.
MediaStream.active
MediaStreamTrack.stop()
이를 위해서는 다음과 같이 변경해야 합니다.
MediaStream.active
를 사용하여MediaStream.ended
이 아닌MediaStream
이 스트리밍 중인지 확인합니다.MediaStream.stop()
가 아닌MediaStreamTrack.stop()
를 사용하여 스트리밍을 중지합니다.MediaStream
의 고유 식별자가 필요한 경우MediaStream.label
대신MediaStream.id
를 사용하세요.MediaStreamTrack.label
는 스트림의 소스 기기에 사람이 읽을 수 있는 이름을 제공합니다(예: FaceTime HD Camera(내장) (05ac:8510)).
카메라가 있는 기기에서 Chrome을 열고 simpl.info/gum을 열어 Chrome DevTools 콘솔을 보면 작동하는 모습을 확인할 수 있습니다. 이 데모에서 getUserMedia()
콜백에 전달된 MediaStream 객체 stream
는 전역 범위에 있으므로 콘솔에서 검사할 수 있습니다. stream.getTracks()[0]
를 호출하여 이 스트림의 MediaStreamTrack
를 확인합니다.
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 개발자 네트워크에서 확인할 수 있으며, HTML5 Rocks에서는 오디오 및 동영상 캡처에서 getUserMedia()
에 관해 자세히 설명합니다.
Chrome 변경사항에 관한 의견을 보내주셔서 감사합니다. 이러한 지원 중단에 관한 버그 (여기 및 여기)를 추적하고 구현 의도에서 자세한 내용을 확인하세요.