誰でも簡単!iOS向けのSonyのレンズカメラQX10/100APIライブラリを作った。

 

QX10_mainvisual_index.jpg

昨今ウェアラブルデバイスやらiBeaconやらスマホ以外のデバイスが盛り上がってきてますが、今後はより、スマホを起点とした外部デバイスとの連携サービスが益々重要なってくると思います。

そこで、これからスマホと外部デバイスの連携開発を調査できれば思います。

まずは、そのコンセプトの面白さから話題となったSonyのレンズカメラQX10/100との連携をさせてみたいと思います。

このデバイスはコンセプトも面白いですが、何と言ってもAPIが公開されているので夢が膨らみます。

そこでiOS向けのライブラリがなかったので作ってみました。

SonyCameraRemoteAPI

nyankichi820/SonyCameraRemoteAPI · GitHub

基本的にJSONRPCで扱えるので取り回しは楽なのですが、ちゃんとやるとSSDPでの機器検索やliveプレビューは、生パケットの処理があったりするのでその辺もカバーしました。

まだハンドリングが甘いので調整が必要ですが、例えばカメラから取得した画像をGPUImageで処理するなんてことが可能です

例:プレビュー画像に対してフィルタ処理をかける。

 self.client = [[SonyCameraRemoteAPIClient alloc] init];


     __weak __typeof(self)weakSelf = self;
    [self.client discoverDevices:^(NSDictionary * result, NSError *error) {
        weakSelf.shootButton.enabled = YES;
        weakSelf.statusLabel.hidden = YES;
        [weakSelf.client captureLiveview:[result objectForKey:@"liveviewstream"] captured:^(NSData *result, NSError *error) {
            UIImage *image = [UIImage imageWithData:result];
            if(!image){
                return;
            }
            dispatch_async(dispatch_get_main_queue(), ^{

                GPUImageSwirlFilter *filter = [[GPUImageSwirlFilter alloc] init];
                [filter setAngle:0.3];
                UIImage *filteredImage = [filter imageByFilteringImage:image];
                weakSelf.imageLayer.contents = (id)filteredImage.CGImage;

            });
        }];


    }];

その他、細かい制御もAPIで操作可能なのでぜひ面白いアプリを作ってみてください!