자바스크립트가 기본이 아닌 사운드 장치를 사용하도록 강제

자바스크립트가 기본이 아닌 사운드 장치를 사용하도록 강제

나는 자바스크립트를 통해 오디오를 재생하는 단일 페이지가 브라우저의 나머지 부분(실제로는 시스템의 나머지 부분)과 다른 사운드 카드를 사용하도록 강제하려고 합니다. 현재 내가 이해하고 있는 바는 브라우저가 사운드 카드 싱크에 직접 액세스하지 않고 오디오 재생을 원하는 플러그인에 위임한다는 것입니다. 이는 이론적으로 자바스크립트가 플래시나 다른 플러그인과 다른 사운드 싱크를 사용하는 것을 가능하게 합니다. 실제로 가능한 일인지...

이것은 배포할 의도가 없으며 콘솔이나 이와 유사한 것을 통해 한 컴퓨터의 출력을 변경하려고만 하는 것입니다.

답변1

그것은 미래이고 지금은 가능합니다! 함수 deviceId를 사용하여 사용 가능한 출력을 수집할 수 있습니다 mediaDevices.enumerateDevices. 그런 다음 원하는 요소를 요소 deviceId에 적용하십시오.AudiosetSinkId

const devices = await navigator.mediaDevices.enumerateDevices();
const outputs = devices.filter(({ kind }) => kind === 'audiooutput');
const output = outputs[1]; // Choose a device

const audio = new Audio();
audio.setSinkId(output.deviceId);
audio.play();

남은 것은 또는 필드를 audio설정하여 사운드를 적용하는 것뿐입니다 .srcsrcObject

관련 코드펜:https://codepen.io/smujmaiku/pen/oNjBmVj

참고: audio.play()먼저 사용자 상호 작용이 필요합니다.

또한: 플래그를 확인하세요.https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/setSinkId

답변2

불가능한. 미래에는 그럴 수도 있지만 현재로서는 Safari, Chrome, FireFox, Opera 및 기타 브라우저에는 설정/기본 설정에 이를 변경할 수 있는 옵션조차 없습니다. 그리고 아시다시피 javascript는 인터넷 브라우저에서 작동하며 인터넷 브라우저가 할 수 있는 작업을 수행할 수 있습니다.

이제 패키지/코어 후크/외부 모듈을 작성하고 자바스크립트로 변경할 수 있기 때문에 Node.js를 사용하여 이를 변경할 기회가 있다고 생각합니다. 하지만 사운드 카드 변경 효과는 서버에만 적용됩니다. Node.js + 모듈을 사용하는 사이드 클라이언트.

이를 변경하려면(자바스크립트와 인터넷 브라우저를 사용할 수 없는 경우) 가상 오디오 케이블을 사용할 수 있습니다.http://en.wikipedia.org/wiki/Virtual_Audio_Cable이는 Windows 용 응용 프로그램입니다.

비슷한 질문Firefox에서 오디오 출력 장치 변경

관련 정보