こんばんは。Marです。


先日よりshinjiが奮闘中のUstream配信の件、Macの画面をWindowsマシンに送って、Windows側から配信(放送)する方法が知りたいという要望。


メールで直接質問受けてましたが、実際に自分で試してみる時間がなかなかとれず、ようやく今日試せました。


Yahoo知恵袋にも質問してたようでまだ回答者なしということなので、私が回答するとなんか自己解決ならぬ身内内解決という感じになりますが、、^^;



でもこの方法、DJ配信以外にも仕事とかでプレゼンとかするときに、普通に使いたいって思う人もいるかもしれないと思うんで、まぁここできちんと手順を説明しててもアリかなと思ったのです。


ここ、技術系のブログじゃないので、今回は詳しいことは説明せずにほぼ手順だけしか書きません。意味よくわからないけど、この通りやればやれるって感じの記事なのであらかじめご了承を。




まず、今回使用するマシンをわかりやすく記号化しておきましょう。


・ 最終的に放送を行うマシンを「マシンA」

・ 放送マシンに、画面イメージを送る送り元のマシンを「マシンB」


とします。


なので、今回はマシンAがWindowsPC、マシンBがMacとなりますね。




マシンAも、マシンBもMac同士とか、マシンAがMacでマシンBがWindowsの場合はネットでいろいろ調べたらたくさんやり方が出てきますが、マシンAがWindowsでマシンBがMacという逆のパターンは私も軽く検索したところ手順を記したページを見つけることができず、shinjiも自身で結構探したらしいのですが見つけれなかったとのことでした。


最初は前回エントリーのコメント欄で書いたように、シンプルにVNCとか使ってみたら?と言ってみたのですが、shinjiが実際に試したところコマ落ちで運用に耐えれないとのこと。


ネットで軽く見る限り、Mac同士なら手順例もたくさんありましたし、環境的には放送側をWindowsにするだけで、やり方は違えど内容的に同じことやればいけるはずと思ったので、このあたりのページを参考にしてトライ。



ここでざっくり今回試しにやってみたことの大まかな流れを説明すると、



1. マシンA(Windows)にもマシンB(Mac)にもUstream Producerという配信用ソフトをインストール。(Pro版は有料だけど、無料版でも今回の要件は満たせるのでどちらも無料版)
2. マシンA(Windows)に外部からssh接続できるようにする

3. マシンA(Windows)を放送できる状態にするために、Ustream Producer起動
4. マシンB(Mac)にて、画面キャプチャーを配信するためのDesktop Presenter(Ustream Producerに同梱)を起動
5. マシンB(Mac)のDesktop Presenterが本来なら自マシンで起動しているUstream Producerにポート7272で接続しているのを、そのままsshでマシンA(Win)にポートフォワードで送信
6. マシンA(Win)側では、マシンB(Mac)からsshポートフォワードで送信されてきたMacのスクリーンキャプチャをあたかもマシンA(Win)のローカルのDesktop Presenterと勘違い?(というかWinのUstream Producer側からはローカルのものかどうかなんて区別がつかない)させることで、晴れてマシンB(Mac)のスクリーンキャプチャをマシンA(Win)のUstream Producerを使って放送できた!!


簡潔に書くとこんな感じになります。(もしもおかしな表現や明らかに間違っている箇所があったら、遠慮無くコメント欄でご指摘ください。私としても勉強になりますので幸いです)



ではさっさと手順です。


まず、

1. マシンA(Windows)にもマシンB(Mac)にもUstream Producerという配信用ソフトをインストール。(Pro版は有料だけど、無料版でも今回の要件は満たせるのでどちらも無料版)
詳しい説明は割愛しますが、ここからWin版、Mac版それぞれダウンロードしてインストールしてください。



続いて、

2. マシンA(Windows)に外部からssh接続できるようにする

です。

詳しい理由や説明はさておき、まずCygwinをインストールします。


Cygwinのインストーラーはここからダウンロードできます。




ダウンロードしたインストーラーをダブルクリックしたら、適当にインストールしてください。一応私がインストールしたときのスクリーンショットを並べておきます。


ポイントはひとつだけ。


パッケージを選ぶ(Select Packages)ときに、Admin Categoryにある「cygrunsrv」のBinary欄にチェックを入れて、Net Categoryにある「openssh」のBinary欄にチェックを入れるというところだけです。まぁあとは適当でいいでしょう。


02 03 04 05 06 06 07 08 09 10



インストールが終わったらデスクトップにCygwinのショートカットができます。



11


これをダブルクリックしたら、下のようなコンソールが立ち上がり、UNIXコマンドが入力できるようになります。(DOSコマンドもOK)


(あ、これ以降ユーザー名やらホスト名やらIPやら、とりあえずぼかし入れさせていただきます。別にIPアドレスとかぼかさなくてもいいっちゃーいいんですが)


12

ここまできたら、とりあえずこの黒いやつは閉じていいです。(あとでまた立ち上げますけど)




で、詳しい説明はまたまたさておき、Cygwinを使うために環境変数の設定の手順に移ります。


(WinXP環境ということで説明しますね)


マイコンピューター右クリック → プロパティー → 詳細設定タブ → 環境変数 に行ってください。



システム環境変数の「Path」て変数名に設定されている変数値の最後に以下の文字列を追記してください。
「;C:\cygwin\bin」

こんな感じですね。


13

あと、新規で「CYGWIN」ていう変数名を追加して、その変数値に以下の文字列を追記してください。


「binmode ntsec tty」


こんな感じですね。



14

これで環境変数の設定は終わりです。



はい、続きまして、こちらも詳しい説明は割愛して、またさっきのデスクトップの「Cygwin」アイコンをダブルクリックして黒いコンソールが立ち上がったら、


ssh-host-config -y


って入力してEnterを押してください。




15

そしたらこんな感じになって、最後に「Have Fun!」ってでたらOKです。Have Fun! って言われてもまだ特にまだ楽くはないですけど・・・





続いて、もちろん何やってるかの詳しい説明は省略しますが、

cygrunsrv -S sshd

って入力してEnterを押してください。

で、さらに

cygrunsrv -Q sshd

って入力してEnterを押してください。

Current State が「Running」になってたらOKです。他マシンからsshで接続できるよう、sshサーバーが立ち上がったことになります。


こんな感じです。


16



はい続きまして、相変わらず詳しい説明は割愛のまま、


ssh-user-config


って入力してEnterを押してください。


で、このあとは、よくわからない方は、下のスクリーンショットと同じように私が入力した通りに「yes」とか「no」とか入力してください。


途中で「Enter Passphrase」とパスワードを設定するよう要求されるので適当なパスワードを自分で入力してください。(入力しても文字は表示されません。あとあと暗号鍵とかでやりとりするときがあるんでやっとく。念のため)。

18

で、また最後に「Have fun!」いただいたら成功です。




続いて、Macのほうに移ります。


もちろん詳しい理由や説明はほっといて、ターミナルを起動して、


ssh -c 3des -2 -l winuser 192.168.xxx.xxx -p 22 ;exit

と入力します。[winuser]のところは、マシンAのログインユーザー名、[192.168.xxx.xxx]のところはマシンAのIPアドレスにそれぞれ置き換えてください。

コマンドとかコマンドオプションの意味とかは一切説明しませんので興味があれば自分で勉強してください。

(OSX 10.6では、ターミナルはアプリケーションのユーティリティーに入ってます)



Are you sure you want to continue connecting (yes/no)?

と聞かれるので、「yes」と元気よくタイプしてください。


で、


winuser@192.168.xxx.xxx’s password:

と、パスワードを要求されるので、マシンAにログインするユーザーのログインパスワードを入力してください。


そしたら、

Last login: Wed Apr 6 02:08:01 2011 from 192.168.xxx.yyy
みたいな感じになったらOK。通して書くとこんな感じになります。↓


Last login: Wed Apr 6 02:14:46 on ttys000
marmac:~ macuser$ ssh -c 3des -2 -l winuser 192.168.xxx.xxx -p 22 ;exit
The authenticity of host ‘192.168.xxx.xxx (192.168.xxx.xxx)’ can’t be established.
RSA key fingerprint is 70:1f:a8:00:2b:9b:2f:45:bf:38:XX:XX:XX:XX:XX:XX.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.xxx.xxx’ (RSA) to the list of known hosts.
winuser@192.168.xxx.xxx’s password:
Last login: Wed Apr 6 02:08:01 2011 from 192.168.xxx.yyy
winuser@winhostname ~$


実際に私のターミナルのスクリーンショットはこれ。


19

あ、SSH使うなら、Mac App Storeでも売ってるJellyfiSSHっていうのも便利ですよ。今回は標準のターミナル使っての説明ですが、同じようにsshでtunnelする場合に簡単にできますし。

これが私が実際にssh接続するときに使ってるJellyfiSSHです。

20

はい、ちょっと最後話それましたが、これでようやく手順2が終わり。



あともうちょいですよ。


手順の、

3. マシンA(Windows)を放送できる状態にするために、Ustream Producer起動
4. マシンB(Mac)にて、画面キャプチャーを配信するためのDesktop Presenter(Ustream Producerに同梱)を起動

はそのまんまやればOK。



そして最後、


5. マシンB(Mac)のDesktop Presenterが本来なら自マシンで起動しているUstream Producerにポート7272で接続しているのを、そのままsshでマシンA(Win)にポートフォワードで送信

は、ターミナルで、


ssh -N -R 7272:xxx.xxx.yyy.yyy:7272 winuser@192.168.xxx.xxx

と一行入力してEnterを押してください。



[winuser]のところは、マシンAのログインユーザー名、[192.168.xxx.xxx]のところはマシンAのIPアドレス、[xxx.xxx.yyy.yyy]のところはマシンBのIPアドレスにそれぞれ置き換えてください。



こんな感じ。


Last login: Wed Apr 6 02:15:48 on ttys000
marmac:~ macuser$ ssh -N -R 7272:xxx.xxx.yyy.yyy:7272 winuser@192.168.xxx.xxx
winuser@192.168.xxx.xxx’s password:


パスワードはマシンAのWindowsのログインユーザーのログインパスワードをタイプ。



この部分を実際に私がやったときのターミナルのスクリーンショットはこれ。


21


これでMacの画面がWin側に送信され、WinのUstream ProducerでMacの画面を扱えます。

これが私のMacの画面。



22

で、そのMacの画面をWinのUstream Producerに送信してあたかも自Win上のDesktop Presenterからのキャプチャーデータとして扱っているWinのUstream Producerの画面がこれ。


23


以上です。


だいたいCygwinとか入れる時点で結構めんどいので、どうも回りくどいやり方をしている気がして、もっとシンプルで洒落たやり方があるとは思うんですが、とりあえずMac同士でやってる方法と同じ方法を採用しつつ、放送側をWindowsに置き換えた場合こうすればいいですよ的な回答ということでご勘弁を。




というわけでしんちゃん、かっこいいUST配信期待してます!!




これ読んでできなかった方はコメント欄に書いてもらうか、直接メールいただければ、時間あるときに返答します。時間なかったらしばらくスルーするかもなんでご了承を。


ではおやすみなさい。




—- 引き続きこちらもよろしくお願いします。
Justgiving

主旨はこちら → 日本語 , in English —-