頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


iOS 7のMultipeerConnectivityでストリーミングしてみた

iOS 7でMultipeerConnectivityってのがでてるじゃない?あれ試してみたんだよ。

今までだとGameKit frameworkのGKSessionとか使ってデバイス間でのやりとりしていたんだけど、あれに代わるようなモノと理解すればいいのかな?
どうしてこう似たようなのが出てきたのかよくわからないんだけど、、、確かに便利になったんだ。

というのもGKSessionあたりを使ってデータを送受信する時には1000バイトを超えるとよろしくない(リファレンスにはそういう記述があって、超えたからといって落ちるわけでもないけど)ってことなので、画像なんかを送受信する場合はデータを分割して何度も行ったり来たり、、、ってのを管理するためにゴリゴリとクラスをたくさん作って頑張ってコード書いてたんだよ。

そこへMultipeerConnectivity frameworkだよ。

これを使うと画像の送受信も簡単にできた。
それどころか片方のデバイスのカメラで取得した画像をストリーミングでもう片方のデバイスに表示させる、なんてのも簡単にできた。実はストリーミングなんてサーバーとか必要で、iPhone同士なんかでもできるなんて知らなかったよ。



↑実際にやってみたらこんな感じ。
iPod touch (第五世代)のカメラに写る画像をどんどんiPhone 4Sへストリーミングで送ってる。上の動画はその受信側の画面を撮影したもの。
送受信する一枚の画像のサイズは100x100のRGB、 unsigned char(1バイト)なので30000バイト。
見ての通りスピードが出ないのでよくあるリモートカメラアプリとしては「すげえ!さすがiOS 7だ!」って感じにはならなかったな。
それでも作りやすさからいうと開発者にはありがたいね。
当然俺コードはゴミ箱行きだよ。あれ、目から熱いものが、、、

<< YouTubeの動画を縦長でブログに埋め込む  TopPage  ベジェ曲線を分割する方法 >>

コメント

突然申し訳ありません

swiftでアプリを開発している者です。
方々検索した結果このブログを拝見させていただきました。

>それどころか片方のデバイスのカメラで取得した画像をストリーミングでもう片方のデバイスに表示させる、なんてのも簡単にできた。

片方のデバイスのカメラで取得した画像をストリーミングするという所がどうしても出来ずに思わずコメントしてしまいました。
AVCaptureVideoPreviewLayerの画像をstreamで渡したいと思っているのですが、変換方法がどうしてもわかりません。
ご教授頂けないでしょうか?
よろしくお願いいたします。

2015.01.06   伸也   編集

Re: 突然申し訳ありません

> AVCaptureVideoPreviewLayerの画像をstreamで渡したいと思っているのですが、変換方法がどうしてもわかりません。

画像をNSDataオブジェクトにして送受信してますね。

2015.01.06   たつや   編集

お返事ありがとうございます!!

動画のストリーミングでもNSdataなのですね。

このような質問にすぐに答えていただきましてありがとうございます。
早速検証してご報告させていただきます!!

2015.01.06   伸也   編集

解決しました!!

NSDataにアーカイブをかけることでイメージした動作ができました!!
ありがとうございました!!

2015.01.09   伸也   編集

Re: 解決しました!!

> NSDataにアーカイブをかけることでイメージした動作ができました!!
> ありがとうございました!!

よかったです!

2015.01.13   たつや   編集


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
http://ringsbell.blog117.fc2.com/tb.php/816-4d3d9f86




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad