1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Wowza + WebRTC + Opus + Wowzaサンプルページで正しく視聴できるようにするには

Last updated at Posted at 2022-11-09

はじめに

WowzaがWebRTCに対応しているので

Camera(H.264/G.711) -> Wowza(H.264/Opus) -> webrtc-examples

で視聴確認を行った。その際エラーが出て視聴が行えず、対応に時間を要したのでメモとして残しておく。
なおCameraはH.264/G.711を配信しているのでWowzaにてトランスコード設定(G.711→Opus) を実施している。

※最初は「Wowza(H.264/AAC)」にしてて「あれ?音が出ないぞ?」となり「Wowza(H.264/Opus)」にした経緯もあったりなかったり。

何故Opus?

以下に記載があるが現時点ではOpusがオススメなのと、WebRTCの設定画面では「only」という記載があったことも関係している。

webrtc-examples とは?

WowzaのWebRTC関連ページ(公式)を見ていくと紹介されているサンプル。
実行してブラウザでアクセスするとWebRTCのpublishやplayが試せる。

webrtc-examples.png

トランスコード設定

Wowzaのトランスコード設定で本記事に関係するAudio設定だけを以下に抜粋する。

Wowza_transcodesettings.png

※ここでは設定が「Audio Codec」、「Audio Bitrate」のみである点に注目。

エラーの内容

webrtc-examplesで必要情報を入力し、いざPlay!と思ったら以下のエラーメッセージが出た。

PeerConnection Error: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote offer sdp: Failed to set remote audio description send parameters for m-section with mid='audio'.

webrtc-examplesのサンプル上では以下のように。

webrtc-examples_with_error.png

この時のSDPの内容は以下の通り。(本記事に関係する部分だけ抜粋)

m=audio 9 RTP/SAVPF 96
a=rtpmap:96 OPUS/8000/1

"OPUS/8000/1" の部分は "コーデック/サンプリングレート/チャンネル数" と思われる。

それを踏まえ(?)エラーメッセージを基に調べて行くとどうやらサンプリングレート:48000Hz、チャンネル数:2(ステレオ)じゃないとダメということが分かった。

ただし先述の「トランスコード設定」では「Audio Codec」、「Audio Bitrate」のみ。
さらに次はトランスコード設定でサンプリングレートとチャンネル数を指定する方法を調べる。
すると、、、

トランスコード設定(サンプリングレートとチャンネル数)

先述の「トランスコード設定」で設定した内容は以下のようにXML形式で保存されている。

/usr/local/WowzaStreamingEngine/transcoder/templates/transcode.xml
<Encode>
        <Name>MyTransCodeName</Name>
        <Enable>true</Enable>
        <Description>Copy of: 720p</Description>
        <StreamName>mp4:${SourceStreamName}_mycamera</StreamName>
        <Audio>
                <Codec>Opus</Codec>
                <Bitrate>16000</Bitrate>
        </Audio>
</Encode>

これを以下のように修正するとよいようだ。(<Resample> ~ </Resample>を追加)

/usr/local/WowzaStreamingEngine/transcoder/templates/transcode.xml
<Encode>
        <Name>MyTransCodeName</Name>
        <Enable>true</Enable>
        <Description>Copy of: 720p</Description>
        <StreamName>mp4:${SourceStreamName}_mycamera</StreamName>
        <Audio>
                <Codec>Opus</Codec>
                <Bitrate>16000</Bitrate>
                <Resample>
                        <Enable>true</Enable>
                        <SampleRate>48000</SampleRate>
                        <Channels>2</Channels>
                </Resample>
        </Audio>
</Encode>

保存した後、Wowzaを再起動して配信&視聴を実施すると先述のエラーメッセージが出ることなく無事に視聴ができた。またSDPも以下のように変わっていた。

m=audio 9 RTP/SAVPF 96
a=rtpmap:96 OPUS/48000/2

最後に

  • なぜデフォルトが8000/1?
  • なぜUIで設定できない??

不思議である。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?