
javascriptでカメラとマイクの一覧をselectボックスに
表示し
ボタンの制御によってカメラのon,offマイクのon,offを
実現させたいのですがマイクのon,offの箇所がうまくいきません
他にもバグがあるかもしれませんが
また、カメラとマイクのデバイス一覧をリストに表示できません
コードレビューをお願いします
<html>
<head>
<script>
function start1(camela_flag, mike_flag) {
const video = document.getElementById("video")
const audio = document.createElement('audio');
if (camela_flag == 1 && mike_flag == 1) {
navigator.mediaDevices.getUserMedia({
video: true,
audio: true,
}).then(stream => {
video.srcObject = stream;
video.play();
audio.srcObject = stream;
}).catch(e => {
console.log(e);
})
} else if (camela_flag == 1 && mike_flag == 0) {
navigator.mediaDevices.getUserMedia({
video: true,
audio: false,
}).then(stream => {
video.srcObject = stream;
video.play();
audio.srcObject = stream;
audio.stop();
}).catch(e => {
console.log(e)
})
} else if (camela_flag == 0 && mike_flag == 1) {
navigator.mediaDevices.getUserMedia({
video: false,
audio: true,
}).then(stream => {
video.srcObject = null;
video.play();
audio.srcObject = stream;
audio.play();
audio.muted = false;
}).catch(e => {
console.log(e);
})
} else {
navigator.mediaDevices.getUserMedia({
video: false,
audio: false,
}).then(stream => {
audio.autoplay = false;
}).catch(e => {
console.log(e)
})
}
}
/*
navigator.mediaDevices.ondevicechange = event => {
updateDeviceList();
}
*/
window.onload = function updateDeviceList() {
navigator.webkitGetUserMedia({ audio: true, video: true }, function () {
navigator.mediaDevices.enumerateDevices().then(function (devices) {
devices.forEach(function (device) {
alert(device.label);
})
})
}, function () { console.log('getUserMedia failed') })
const video = document.getElementById("video")
const audio = document.createElement('audio');
navigator.mediaDevices.enumerateDevices()
.then(function (devices) {
var audiolist = document.getElementById('audiolist');
var videolist = document.getElementById('videolist');
var elem_a = document.createElement("option");
var elem_v = document.createElement("option");
devices.forEach(device => {
if (device.kind == 'videoinput') {
elem_v.text = device.label;
elem_v.value = deviceid;
videolist.appendChild(elem_v);
}
if (device.kind == 'audioinput') {
elem_a.text = device.label;
elem_a.value = deviceid;
audiolist.appendChild(elem_a);
}
});
});
}
</script>
</head>
<body>
<div>
<audio id="audio"></audio>
<video id="video"></video>
<input type="button" onclick="start1(1,1);" / value="カメラ&マイクSTART">
<input type="button" onclick="start1(1,0);" / value="カメラSTART">
<input type="button" onclick="start1(0,1);" / value="マイクSTART">
<input type="button" onclick="start1(0,0);" / value="カメラ&マイクSTOP">
<input type="button" onclick="updateDeviceList();" / value="デバイス変更">
</div>
<!--<audio class="gum" title="audio stream from getUserMedia()" controls></audio>-->
<label>Select audio output: </label>
<style>
select {
width: 100px;
}
</style>
<select id="audiolist"></select>
<select id="videolist"></select>
</body>
</html>
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
音声と映像なら <video> だけで処理
映像だけなら <video> だけで処理
音声だけなら <audio> だけで処理
止めるなら getUserMedia は必要ない
<audio> <video> が既存なら createElement しない
<select> を読み込んで getUserMedia の引数に deviceId を渡す
例) getUserMedia({ video: { deviceId: videolist.value } })
<select> は中身を空にしてから <option> 追加
deviceid → device.deviceId
device.label は空欄になる可能性を考慮する
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript javascript作成してます。ラジオボタンで判定するコードを書いてます。 1 2023/07/18 11:03
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 画像の表示位置 3 2022/12/23 08:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オークションサイト一括検索サ...
-
onchangeイベントを強制的に発...
-
HTMLのテキストボックスへのド...
-
JSのボタンを複数う使うには
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
innerHTML内では改行は禁止?
-
return trueとreturn falseの用...
-
selectで選ばれた値を別ページ...
-
hiddenのvalueの値を変えたい
-
連想配列を使ってコンボボック...
-
javascript作成してます。ラジ...
-
setIntervalの間隔を途中で変更...
-
ラジオボタンとフォーム検索の...
-
インラインフレーム内に決めら...
-
2次元配列で2項目についてソー...
-
どこに挿入?
-
jQuery セレクトボックスで選択...
-
cookie使用時にundefinedと表示...
-
印刷プレビュー後のウィンドウ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
JavaScriptのfileオブジェクト...
-
クリックさせたいが、click()が...
-
VB.NETで<Input>タグ、<text...
-
formのfileの値をhiddenでも持...
-
onclickが動作しない
-
クリックでテーブル内の背景色...
-
ボタンかリンクをクリックする...
-
javascriptでtextareaに文字列...
-
javaScriptの変数をJavaの変数...
-
URL 判定
-
任意の<DIV></DIV>の中に計算結...
-
開いた子ウィンドウにあるボタ...
-
innerHTML内では改行は禁止?
-
onClickがinput type="image"だ...
-
JSのボタンを複数う使うには
-
jQueryで設定したイベントハン...
-
オンクリックで現在時刻の取得→...
-
オークションサイト一括検索サ...
-
インラインフレームから親ウィ...
おすすめ情報