16
WebRTC のののののののののののののののWebRTC Meetup Tokyo #2 LT のののののののののの のののののの

WebRTCのオーディオ処理の謎、誰か教えて!

  • Upload
    mganeko

  • View
    1.465

  • Download
    2

Embed Size (px)

DESCRIPTION

WebRTC and Audio Question WebRTC Meetup Tokyo #2 LT 資料

Citation preview

Page 1: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC のオーディオ処理の謎、誰か教えて!

WebRTC Meetup Tokyo #2 LT

インフォコム株式会社がねこまさし

Page 2: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC を使った片方向配信• WebRTC を使って、社内イベント映像の配信を実施– インフォコム非公認 放送部の活動– 年初社長挨拶、デモ大会、プレゼン大会、表彰式など

• 普通の PC から配信すると、 20 ~ 30 接続ぐらいでCPU が振り切れる– 解像度を落としたり、フレームレートを落とせばもう少

し可能– でも、数百とかは無理!

Page 3: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC 多段中継• 多段に中継すれば、もっと大勢に配信できるので

は?– 30×30 で 900 人! 力技で解決!

Page 4: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC 多段中継の内側

PeerConnection

MediaStream

PeerConnectionMediaStream

配信元

PeerConnection

PeerConnectionMediaStream

中間層

視聴者

Page 5: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC 多段中継の内側

PeerConnection

MediaStream

PeerConnectionMediaStream

配信元

PeerConnection

PeerConnectionMediaStream

中間層

視聴者

音が出ない!!

映像は出る

Page 6: WebRTCのオーディオ処理の謎、誰か教えて!

謎 1

• WebRTC で、リモートストリームをさらにリモートに流すと、最終段で音が出ない

• どうして??? 誰か教えて!!• ちなみに、 Chrome 34 です

• MediaStream をそのまま渡さずに複製した場合 → 文法エラーにはならないが、再生時に not found 404 となってしまうtalkerStream = new webkitMediaStream([

stream.getAudioTracks()[0], stream.getVideoTracks()[0]]); // pass here, but not found 404 while playing

Page 7: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC 多段中継の使いどころ

配信元n 人の視聴者

視聴者はそれぞれ1 本のダウンストリーム

配信元は n 本のアップストリーム

上り方向の回線トラフィックが

パンクする

Page 8: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC 多段中継の使いどころ

配信元n 人の視聴者

視聴者はそれぞれ1 本のダウンストリーム

配信元も 1 本のアップストリーム

中間サーバー WebRTC のブラウザベースあるいは

MCU ( メディアサーバー)Dialogic XMS など。どうせなら TURN と一体になったサーバーがあると嬉しいかも

Page 9: WebRTCのオーディオ処理の謎、誰か教えて!

5/31 の twitter にて

• Chrome WebRTC M35 Release Notes.– Issue 294145:- Decoupled MediaStream from MediaStreamTrack. Earlier

MediaStreamTrack belonged to exactly one MediaStream now it can belong to zero to many MediaStreams. Also, the clone() method for MediaStream and MediaStreamTrack has been added.

Chrome 35 で解決??

Page 10: WebRTCのオーディオ処理の謎、誰か教えて!

Chrome 35 の場合

PeerConnection

MediaStream

PeerConnectionMediaStream

配信元

PeerConnection

PeerConnectionMediaStream

中間層

視聴者

音が出ない!!

映像もでない!

Page 11: WebRTCのオーディオ処理の謎、誰か教えて!

Chrome 35 の場合

PeerConnection

MediaStream

PeerConnectionMediaStream

配信元

PeerConnection

PeerConnectionMediaStream

中間層

視聴者

音が出ない!!

映像もでない!

PeerConnection.addStream(stream) でエラーFailed to execute 'addStream' on 'RTCPeerConnection':

Unable to add the provided stream.

そのままでも、 MediaStream.clone() でも、 MediaStreamTrack.clone() でも

Page 12: WebRTCのオーディオ処理の謎、誰か教えて!

残念… .

さて、次の話題

Page 13: WebRTCのオーディオ処理の謎、誰か教えて!

前回の LT (Secret-Talk)WebAudio API & WebRTC

WebAudioAPI

FFT ScriptProcessor

PeerConnectionMediaStream

MediaStream MediaStream

リモートへ

ローカルの MediaStream からは変換可能

Page 14: WebRTCのオーディオ処理の謎、誰か教えて!

WebAudio API & WebRTC

WebAudio APIaudioSource

PeerConnection MediaStreamリモートから

remoteSound = audioContext.createMediaStreamSource(stream);

WebAudio APIdestination

audioContext.destination.connect(remoteSound);

音が出ない!!

Page 15: WebRTCのオーディオ処理の謎、誰か教えて!

謎 2

• WebRTC の getUserMedia() で取得したローカルストリームの音は、 WebAudio API と相互変換可能

• ところが、 PeerConnection 越しに受け取ったリモートストリームは、 WebAudio API 用に変換しても、音がでない

• どうして??? 誰か教えて!!• ちなみに、 Chrome 34 です (Chrome 35 未確認)

Page 16: WebRTCのオーディオ処理の謎、誰か教えて!

WebRTC は、映像系よりも音声系がややこしいかも

みんなで情報共有しましょう

Thank you!