.net core で linux 上のローカルIPアドレスを取得する方法

こんにちは、あかぴです。

今回は C# で自身のローカルIPアドレスを取得することについての話題です。

前説

.net core はマルチプラットフォームなことがウリなので、Linux上で動くアプリケーションを作成することもあると思います。 .net の WebClient では自身のIPアドレスを調べるのにSystem.Net.Dns.GetHostAddresses() を用いる方法が良く使われています。

例: C# で自分のPCのIPアドレスを取得 – Edifying Soil (hatenablog.com)

問題

Linux上で上記の方法を用いてIPアドレスを取得すると、ループバックアドレス(だいたい 127.0.0.1)だけしか返ってきません。

解決策

NetworkInterface.GetAllNetworkInterfaces() を用いる方法を利用します

            var heserver = NetworkInterface.GetAllNetworkInterfaces();
            foreach(var host in heserver)
            {                
                foreach(var ip in host.GetIPProperties().UnicastAddresses){
                    string addr_str = ip.Address.ToString();
                    if (addr_str.StartsWith("192.168"))
                    {
                        return  addr_str;
                    }
                }

            }

上記のコードでは、取得したアドレスのうち一番最初に見つかった192.168から始まるものを返しています。全部ほしければ適当なListにでも突っ込めばいいかと思います。

結果

私の試した環境 (raspberry pi os, .net core コンソールアプリ) では上手くいきました。

 

参考

System.Net.Dns.GetHostAddresses() does not return all local ip addresses on Linux/.NET Core (it works in .NET Framework) · Issue #27534 · dotnet/runtime · GitHub

本問題に関しての議論が上記ページで行われています。

配信環境2020

こんにちは。あかぴです。

最近は動画の毎日投稿をしてたりして、若干ストリーマーの真似事みたいなことをしている僕です。自宅の配線周り等を公開して、これから設備を整えようと思っている人の手助けになればと思ったのでこの記事を書いております。音響回りは配信などしない人でも友人とのボイチャ環境の向上にも役に立つと思います。

 

〇機材

ミキサー AG06

 

マイク PGA-58

USBマイク Amazonでセールだったやつ

配線用 AV-SWR1 オーディオケーブル

TASCAM パワードモニタースピーカーペア https://www.amazon.co.jp/dp/B014UN7UH8/ref=cm_sw_r_tw_dp_U_x_B4wQEb2D6EZCS

 

キャプボ AVerMedia Live Gamer MINI 

〇使用ソフト

音声収録 Audacity

動画収録 AverMedia RecCentral 4

動画編集 fimora9

配信 OBS Studio

〇配線

AG06は実際の自分の使用中の写真ですが、他のはだいたいインターネッツで拾った写真です。万が一著作権を主張されたら差し替えます(ガバガバコンプライアンス)

 

〇配信時の設定について

ゲーム配信をするとき音響回りで必要なことは

1、自分がゲーム音を聞く

2、ゲーム音を配信に乗せる

3、自分の声を配信に乗せる

4、PCからの音を聞く

5、PC上の音を配信に乗せる

の5つだと思います。それぞれを達成することは簡単でも複数組み合わせるとうまくいかなかったり。

 

さて、AG06は入門者向けと銘打たれてはいますが多機能なので、上記の配線を維持したままでもいろいろなやり方をすることができます。面倒なので今回はひとまず自分がやっている方法の紹介に留めます。

まず、AG06の真ん中ちょっと下にあるスイッチは「DRY CH 1-2」にしておきます。こうすることで、ミキサーへ入力された音のうち、1-2チャンネル(つまりはマイク)だけをPCへ送ることができます。つまり、PCから見た入力のAG06は常にマイクのみというわけです。モニターからの音(ゲーム音)とPCからの音を配信に影響を及ぼさずにスピーカーに流すことができます。

この場合、配信に送るためのゲーム音を別の場所から引っ張る必要があります。これは自分はキャプボからの音声をそのまま利用しています。OBS Studio で Live Gamer mini の音をそのまま利用したい場合には、AverMedia のサイトから Stream Engine をダウンロードしてインストールする必要があることに注意してください。他の AverMedia 製品に関しても概ね同様であると思います。この方法ではキャプボからの音声を直接OBSに流しているのでPC上では再生されません。

この時点でOBSのミキサー上にはマイク(AG06)とキャプチャーデバイス(LiveGamer mini)の二つのみです(デフォルトであるデスクトップ音声はミュート)。前述の項目で言えば1~4までが満たされた状態ですね。PC側で鳴ってる音は配信には乗っていません。お友達がいないので、配信にボイチャ音声乗せたことないため5に関しては割愛します。たぶんデスクトップ音声をオンにしてなんやかんやすればうまくいきます。

また、PCで鳴ってる音が配信に乗らないので一人で配信の音響チェックが可能になります。設定に付き合ってくれる友達がいないオタクは技術と機材投資でカバーしよう!!

 

音量調節したいときに触る項目がいくつかあるので説明しておきます。

a.配信に送るマイク音を調整したい

→AG06のマイクが差さっているチャンネルの設定を見直す。OBSのマイク入力のバーを動かす。OSのマイク設定を確認する。

どれをいじっても効果あるけど、後ろ二つはMAXにしたままでAG06の設定で何とかするのが丸いと思います。

 

b.配信に送るゲーム音を調整したい

→OBSのキャプチャーデバイスの入力バーを動かす

AG06側のつまみをどんだけ弄っても関係ないので注意!!

 

c.自分の聞いてるゲーム音を調整したい

→AG06の入力つまみ(CDマークかキーボードマーク)を弄る。AG06の出力つまみを弄る。モニターの音量を弄る。

モニターの音量は最大で固定が丸い。入力つまみで調整するのがいいと思います。

こちらは上と逆でPC側の設定をいくら弄っても関係ないので注意!!

 

Q&A

Q1、配信に音が乗らないんだけど

A1、原因の可能性は無限にあります。できる限り問題を切り分けて考えましょう。上記の配線をまねている場合には、それぞれの入力が切り分けられているので配信に乗らない音が一つならそのソースの設定、すべての音が鳴らない場合にはOBS側の設定や不具合等ある程度方向性を絞って考えることができます。

とはいえ、オーディオデバイスやキャプボはPCとの相性次第で不安定な動作をすることもあるので、困ったらとりあえずPC再起動することをお勧めします。

 

Q2、ハウリング起こらない?

A2、今回の配線ではPC音を配信に乗せていないので起こりません。デスクトップ音声を配信に乗せたうえで自分の配信を開くとかすると起こりますが。

また、指向性の薄いマイク+スピーカーの場合にはマイクがゲーム音を拾って二重に聞こえる可能性はあります。この場合でもマイク音をスピーカーから出していないのでハウリングは起こりません。ゲーム音が二重に配信に乗るのが嫌な場合はAG06の出力先をイヤホンやヘッドフォンに変えるか、マイクを指向性が高めのものに変えてください。

 

Q3、上記の配線試したらPCがめっちゃブルスクするんだけど

A3、AG06をPCからの電源オンリーで使ってるとめちゃくちゃブルスクします。別途電源につなぐとだいぶ安定するのでおススメ(というか実質必須っぽい)。電源自体は携帯とか充電するようなUSB電源でいいっぽいのでとりあえず繋いどきましょう。

 

Q4、USBマイクは何に使ってるの?

A4、PS4につないでボイチャしてます。指向性がなんちゃってレベルでスピーカーの音めっちゃ拾うので使うときはイヤホンしてます。

短期語学研修@マレーシア~15日目~

今日はなんとか洞窟とチャイナタウンへ行った。

洞窟は特に面白い施設とかはなかったが、猿がいっぱいいた。猿はとても賢く、友人が持っていたペットボトルを奪われた挙句、自分で蓋を開けて飲まれていた。

チャイナタウンではググったら出てきたおいしいチキンライス(ケチャップライスではなく、チキンとライスである)を食べた

やーっぱり俺はチキンライスがいいや!!

チャイナタウン。あまりにもよくわからなかったのでとりあえずパスピエのチャイナタウンを聞いておいた。

チャイナタウンではスリの現場を目撃した。いわゆるおとりを使った手法だった。中国人(?)観光グループの列に男が一人入っていき、観光客たちがその男に注視している間に反対側から来たおじいちゃんが客のカバンに手を伸ばしていた。

見えていたのはそれだけなので、本当に取ったのかどうかはわからないが、「本物」の動きの鮮やかさにビビる小市民であった。

チャイナタウンの横(一角?)にあるセントラルマーケットではいろいろお土産を買った。渡せるかはわからないけど、渡せたらいいなぁと思っている。渡せないような気もしてるけどまあ、未来の自分の頑張りに期待しておこう。

短期語学研修@マレーシア~14日目~

土曜日なので、ツアー的なアレであちこち連れていかれた。ツインタワーに行くということしか知らなかったけど、途中で王様の家の門に連れ行かれていたらしい。バス降りて15分後に出発とか言われたので、完全にトイレ休憩だと思っていた。

ツインタワーは予約が取れなかったので高いところまで登れなかった。また木曜日に行く予定なので、詳細はその時にでも。

夜から深夜にかけて、ルームメイトとその友達の合計8人で人狼をやった。友達の少ない僕は、人狼の経験が浅いのでセオリーを覚えつつで大変だったが楽しかった。盛り上がったしまたそのうちやると思う。

短期語学研修@マレーシア~10-13日目~

最近すっかり更新が滞っていたけど、正直生活が安定すると目新しいものがない(ネタがない)し、中間テストに関連して少し忙しかったので許してほしい。

テストはSSP(スピークんぐリスニング)とRW(リーディングライティング)の4科目。スピーキングではうちのクラスではなんか劇みたいなことをした。5~10分でとのことだったが、最長のチームですら3分半だったので3分~8分ということに因果が変更された。

最初の振り分けテストの結果で、レベルが6段階に分かれているのだが、レベル1つにつき3年分くらいの内容差がありそう。僕はレベル2なので、小学校高学年くらいの授業を受けている。

今週はアパートに備え付けのジムに結構行った。クーラーがないのでクソ暑い上に、爆音で音楽を垂れ流しているやつがいたりするが、やはり近いというのは最強に便利である。

全然関係ないが、海外からは権利が絡む動画サイトが見れないので、ニコニコのチャンネルもアマプラも見れないのだが、大学のVPNにつなぐことで回避ができた。これ学校の回線にクッソ負荷かけてそうだけど、高い学費払ってるし春休みだし許してくれって感じだ。他所の学校の人にもおすすめできるフリーのVPNとかあったら教えてあげたいが、探すのは面倒である。

短期語学研修@マレーシア~9日目~

今日は憂鬱な月曜日。

今週を乗り切ればあと実質1週間と思えるので気張っていきたい。

今日のSSPの課題はスピーキングの中間の練習のためにペアでワンカット劇をするといったものであった。内容も自分たちで考えるのだが、ペアの相手が連絡とぎれとぎれで怪しい空気を感じていたら案の定当日に病欠だった。

大枠は考えてあったので、それを既に英語ペラペラのスーパー生徒に即興でやってもらった。その人には無限に助けてもらっていて申し訳ない。スーパー生徒、なんで英語の授業に来てるんかと思ったら英語を使う国出身だからしゃべれるけど文法が微妙らしい。世の中にはいろんな人がいるなぁと思った。

短期語学研修@マレーシア~8日目とおまけ~

昨日の日記を今日書くアレ

日曜日だけど午後から買い物に連れていかれた。行ったのは数日前に個人でも行ったパビリオンを含むショッピングモール街。

とりあえず開幕は東京ストリート(パビリオン6階にある日本リスペクトのフロア)にてラーメンを食べた。ぶっちゃけ日本のラーメンと比較しても上位に入るくらいにはうまかった。ルームメイト達はこれで日本食が恋しくなったようだった。

あとは適当に買い物をした。とはいえ基本無欲な男子5人なので、時間をつぶしていたといったほうが近いかも。ショッピングモール内に突然バスケットのハーフコートがあったりしたのは外国っぽくてよかったけどあとはぼちぼち。

電気屋さんがひたすら入っている建物があってテンション上がったけど、周りは別にオタクじゃないので控えめにスルーした。僕はASUS信者なので、実店舗が多くみられてうれしかった。

31アイスでクッキー&クリームを食べた。味は変わらないように感じたが、クッキーのクラッシュ具合が日本とは段違いで大きめの塊とかは全く残っていなかった。

以下怪しい電気屋で買ったフルワイヤレスイヤホンのレビュー

買った経緯

タイムズスクエア内のITセンター(?)(小さい電気屋さんみたいのがいっぱいある空間)を歩いていたところ、一つの店のおっちゃんに声を掛けられる。

ワイヤレスのイヤホンを探していると伝える。

おっちゃんが別の店から商品を持ってくる。

199RM(およそ6000円)と書いてある。

「ちょっと高いね」と言うと「150RM(およそ4500円)ならどう?」と聞かれたのでまあいいかと購入。

そうして購入したのがAfansとかいう謎メーカーの商品であった。

とりあえず一日使った感想。

接続はBluetooth。音はまあ普通。充電はよくあるケースに入れて行う系。取説によると1時間の充電で2時間使えるようだ。

充電回りがイマイチで、ケースに入れてボタンを押すと充電が始まるのだが、ケースを充電しているとランプがケース受電中のランプに固定されるので充電されているかわからない(おそらくされていない)。また、本体の充電中は赤いランプが点灯すると書いてあったが、知らばらくすると消える。消えている間に充電されているかは微妙だけど、1時間でフル充電が本当なら充電されてない気がする。

総評すると、まあ値段相応の怪しい商品だった。物が悪いので雑に扱っても問題ないので一長一短ではある。とりあえずつけたままトレーニングルームに行く予定。

短期語学研修@マレーシア~7日目~

6日目は諸事情により闇に葬られた…

7日目。今日はマレーシアにきて初めての休日。とはいえ用意されたレジャーに行ってきたので肉体的にはあんまり休めていない。サンウェイラグーンとかいうプール兼遊園地みたいな施設だった。

大変楽しかったが、知らない日本人と話す機会が多くてしんどかった。あと最後に話の流れで行くことになったお化け屋敷(ルームメイト達は女の子に誘われたらホイホイついていくため気づいた時には決まっていた)が怖すぎてチュートリアルで退出した。冷静にダサすぎるが、人に迷惑かけてないしレジャーで嫌なことする必要もないだろうと最低限の自己弁護をしておきたい。

あと、ターザンみたいなやつが怖くてやる気なかったけど体重制限引っかかっていたのが結構ショックだったので痩せる決意を新たにした。その決意のままに寮についてるトレーニングルームに向かったが時すでに時間切れ、閉室していたのであった。

短期語学研修@マレーシア~5日目~

今日は寮のジムに運動しに行った。必要なウェアや靴をすべて現地のショッピングモールで買う富豪プレイだった。まあ物価が違うのでそんなに散財したわけではない。ウェアは上下で1800円くらい。靴は1000円位で、なんなら靴下が一番高い(ランニング用で1足1500円くらい)

ジム自体は筋トレ用のくたびれたマシンが4種、各種ダンベル、有酸素用のマシン3種各1台と、ぼちぼちな印象。個人的には有酸素用運動用マシンにタブレットを設置できるトレーみたいなのが後付けされていたのが良かった。これから暇を見つけていこうと思う。

明日は朝が遅めなので、夜にルームメイト5人で集まって大富豪とかワードウルフとかして遊んだ。大富豪で勝ちすぎてアレだったのでアレしてアレだった。

短期語学研修@マレーシア~4日目~

授業も二日目、我々の生活も板についてきた今日この頃。

今日は授業後にグラブを利用して少し遠出をした。週末がプールらしいのだが、水着を持っていなかったためである。

向かった先は、クアラルンプール近くの大型ショッピングセンターパビリオン。

大型の呼び名に相応しいデカさであった。

SamsungやHuaweiの実店舗があるのが個人的には面白かった。

授業の関係で行けなかった友人がいるので、近いうちにまた行くことになると思う。その時にはもう少し余裕をもって探索できるだろう。

帰りのタクシーの中でかわいい女の子の話で盛り上がった。男とは単純な生き物である。(そのハングリー具合に若さを感じる年寄りな僕であった)