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を探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
onClickがinput type="image"だ...
-
javascriptで作成されたテーブ...
-
onclickが動作しない
-
クリックさせたいが、click()が...
-
任意の<DIV></DIV>の中に計算結...
-
VBScriptで子画面へ配列のデー...
-
javascriptでtextareaに文字列...
-
javaScriptの変数をJavaの変数...
-
csvファイルの内容を絞り込みた...
-
クリックでテーブル内の背景色...
-
jQueryで設定したイベントハン...
-
URL 判定
-
vbscriptでIE自動入力(コンボ...
-
jQueryでshow/hideが上手く行か...
-
ポップアップブロックにならな...
-
innerHTML内では改行は禁止?
-
BackSpaceしたい(QNo.2734284の...
-
VB.NETで<Input>タグ、<text...
-
JavaScriptのfileオブジェクト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
onchangeイベントを強制的に発...
-
クリックさせたいが、click()が...
-
formのfileの値をhiddenでも持...
-
JavaScriptのfileオブジェクト...
-
ボタンかリンクをクリックする...
-
innerHTML内では改行は禁止?
-
onclickが動作しない
-
クリックでテーブル内の背景色...
-
javaScriptの変数をJavaの変数...
-
jQueryで設定したイベントハン...
-
追加ボタンを押した際に ok ボ...
-
URL 判定
-
開いた子ウィンドウにあるボタ...
-
マウス座標の値を保存する方法...
-
別ウインドウから、textarea内...
-
親ウィンドウのフォームの値を変更
-
onClickがinput type="image"だ...
-
evalで数値に変換してる筈なの...
-
コードレビューをお願いします。
-
フォームのNAMEを変数に格納し...
おすすめ情報