問題タブ [mediastream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
webrtc - MediaStreamTrack - ソースの設定 -- W3C ドキュメントの参照ミス
ドキュメントを読んでいるうちに、ローカル メディア (ビデオ/オーディオ) ファイルからソースを追加し、PeerConnection を使用してストリーミングできるというヒントを得ました。
ただし、文: このドキュメントでは、マイクとカメラ タイプのソースの使用のみを説明していることに注意してください。他のソース タイプの使用については、他のドキュメントで説明されています。
それで、誰かがこれらの書類を持っていますか?
getusermedia - MediaStream 参照が削除されていない / ウェブカメラがビジー状態のままなのはなぜですか?
背景・課題
I を使用するnavigator.mediaDevices.getUserMedia(constraints)
と、さまざまなデバイス (Web カメラやマイクなど) 用の MediaStream オブジェクトを取得でき、通過するデータを使って好きなことを行うことができます。
このメソッドは、メディア ストリームに解決される をgetUserMedia
返すPromise
か、指定された制約 (ビデオ、オーディオなど) に使用できるストリームがない場合は拒否します。ストリーム オブジェクトを取得した場合、MediaStream への参照を保存しないでください。ガベージコレクターはそれを削除する必要があります。
私が観察したことは、ストリームが削除されていないことです。たとえば、ウェブカメラのストリームを取得すると、ストリームへの参照が残っていなくても、ストリームはビジー状態のままです。
質問
- 参照を保存しない場合、MediaStream オブジェクトはどこに保存されますか?
- ガベージコレクターによって削除されないのはなぜですか?
- ウェブカメラが常にビジー状態になるのはなぜですか?
canvas - CanvasCaptureMediaStream / MediaRecorder フレーム同期
CanvasCaptureMediaStreamと MediaRecorderを使用する場合、各フレームでイベントを取得する方法はありますか?
私が必要とするrequestAnimationFrame()
のは とは異なりますが、ウィンドウではなく CanvasCaptureMediaStream (および/または MediaRecorder) に必要です。MediaRecorder は、ウィンドウとは異なるフレーム レートで実行されている可能性があります (25 FPS と 60 FPS など、通常は割り切れないレートである可能性があります)。そのため、ウィンドウではなくフレーム レートでキャンバスを更新したいと考えています。
webrtc - 2 つの MediaStream が等しいことをテストするにはどうすればよいですか?
2 つのMediaStreamsが等しいかどうかを判断する方法があるかどうか疑問に思っています。
「等しい」とはどういう意味ですか?
2 つのストリームが同じハードウェア ソースを使用しているかどうかを確認したいと思います (同じマイクとカメラが使用されています)。streamB
まったく同じ制約で取得すると、streamA
それらが等しいことを意味します。
これが私がこれまでに試したことです:
- MediaStream を介して比較する
id
例:仕様streamA.id == streamB.id
によると、これは失敗します:
MediaStream オブジェクトが作成されると、ユーザー エージェントは識別子文字列を生成し、オブジェクトの id 属性をその文字列に初期化する必要があります。UUID [rfc4122] を使用することをお勧めします。これは標準形式で 36 文字です。フィンガープリンティングを回避するために、実装では、UUID を生成するときに RFC 4122 のセクション 4.4 または 4.5 のフォームを使用する必要があります。
MediaStreamTracks
id
の を比較してください- 同じ話で、トラックごとに UUID が生成されます。labels
現在の Chrome にハードウェアの名前/識別子が含まれているトラックを比較します。ただし、これは私が探しているものに非常に近いです(私のものを強調してください):
ユーザー エージェントは、オーディオ ソースとビデオ ソースにラベルを付けることができます (「内部マイク」や「外部 USB Web カメラ」など)。label 属性は、オブジェクトの対応するソースのラベルを返す必要があります (存在する場合)。対応するソースにラベルがある場合、またはラベルがない場合、属性は代わりに空の文字列を返す必要があります
私が取ることができる別のアプローチはありますか?2 つのメディア ストリームを比較するような状況になってはいけませんか? label
その属性を信頼できると思いますか?
御時間ありがとうございます。
javascript - js+html5 getUserMedia がマイクと競合する (Android) (モバイルは電話がアクティブであると見なします)
編集済み - 投稿の下部で更新
phonegapを使用してAndroid用のWebベースのアプリを構築しています.getusermediaの初期化後、ボリュームダウン/アップボタンを使用すると、ボリュームコントロールは通話用であり、スピーカー用ではありません.新しい録音を開始します...さらに、アプリの実行中に電話が実際に電話の中で考えていることに気付きました。キャンセル。
次のセグメントが問題であることはわかっています(コメントしましたが、問題はありませんでした)
この関数は、デバイスの準備ができた後に呼び出されます
また、以下の記録開始機能と記録停止機能も追加しています
startRecording は touchstarts on record ボタンで開始します stopRecording は touchend on record ボタンで呼び出されます 助けてくれてありがとう
更新:
ストリームは録音時だけでなく常にライブであったため、競合はマイクにありました。今は問題なく動作しますが、通話中に録音ボタンを無効にする必要があります。そうしないと、競合してアプリがクラッシュしたり、マイクをすべてから切断したり、切断したりする可能性があります。
android - オーディオはアンドロイドwebrtcローカルストリームに記録されませんか?
Androidアクティビティで1つのエラーに直面しています。解決を手伝ってください。webrtc android用のlibjingleライブラリを使用しました。
エラーは:-
status -38
WebRtcAudioRecord: AudioRecord.startRecording に失敗しました
StartRecording に失敗しました!
WebRtcAudioRecord: StopRecording() なしで InitRecording() が 2 回呼び出され
ました。
初めて完全に機能しましたが、ビデオ通話アクティビティからホームアクティビティに戻り、再びビデオアクティビティに戻るとエラーが発生します。
このシナリオでは、ビデオは完全に機能しますが、オーディオは記録されません。
リモートストリームからオーディオとビデオの両方を取得しましたが、ローカルストリームはビデオのみを取得してアイス候補に送信しますが、オーディオは記録されません。
それを解決する方法? 私を助けてください。
ありがとうございました。
javascript - 再生せずに webrtc オーディオ ストリームの音量を取得できますか?
angularjsビューで表現された一連のwebrtcストリームがあり、特定のボリュームしきい値を超えているものを視覚化し、一度に1つずつ聞くことができるようにしたいと考えています。これは可能ですか?私が見つけたものはすべて、音量を計算するためにストリームをオーディオコンテキストに接続する必要があるようです。そして、これはストリームを再生します。ストリームを再生せずに音量を計算できますか? 音量のしきい値を検出するために、hark.js で遊んでいます。
私のストリームはサードパーティの rtc ライブラリから派生したものですが、最終的には多数の webrtc ストリームがあり、どのストリームがノイズを発生させているかを視覚化しながら、一度に 1 つずつ聞きたいと考えています。この例のほとんどは、放送局側にこのロジックがあるようです。
hark コードは、ほとんど次のことを行います。
-始める
-ループ
-また、icelink、サードパーティの webrtc ライブラリ、オブジェクトからストリームを取得します。ビューのビデオ コレクションは、ストリームの束から作成されます。
いくつかの視覚的インジケーターをオーバーレイして、さまざまなビデオ ストリームを再生せずにサウンド レベルを表示しようとしています。