[Oculus]3D動画をストリーミング再生する方法 – 6 –

前回はフレーム単位で画像保存する方法についてご紹介いたしました。
今回はその保存した画像をサーバーにアップロードする方法をご紹介いたします。

ただ、画像をアップロードをするわけではなく、ライブ配信を実現するには
撮りながら画像をアップロードする必要があります。

前回でフレームごとに画像を保存するまではできているのでそこにサーバーへの
アップロードの処理を追加いたします。

開発環境は前回と同様「Xcode」を利用します。
サーバーはXAMMPを代用して確認してみます。
スマホからのXAMMP接続は調べたらでてくるので省略します。

初めにネイティブ側の処理、通信部分を記載します。

	//
   NSString *urlString = @"http://○○/upload/upload.php";
    
    // ここは前回のdataをいれています
    NSData *imageData = data;
    
    // 送信データの境界
    NSString *boundary = @"1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    // アップロードする際のパラメーター名とファイル名
    NSString *uploadName = @"postfile";
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyyMMddHHmmss"];
    NSString *uploadFileName = [dateFormatter stringFromDate:[NSDate date]];

    NSMutableString *sendDataStringPrev = [NSMutableString stringWithString:@"--"];
    [sendDataStringPrev appendString:boundary];
    [sendDataStringPrev appendString:@"\r\n"];
    [sendDataStringPrev appendString:[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"%@.jpg\"\r\n",uploadName,uploadFileName]];
    [sendDataStringPrev appendString:@"Content-Type: image/jpeg\r\n\r\n"];
    NSMutableString *sendDataStringNext = [NSMutableString stringWithString:@"\r\n"];
    [sendDataStringNext appendString:@"--"];
    [sendDataStringNext appendString:boundary];
    [sendDataStringNext appendString:@"--"];
    
    // 送信データの生成
    NSMutableData *sendData = [NSMutableData data];
    [sendData appendData:[sendDataStringPrev dataUsingEncoding:NSUTF8StringEncoding]];
    [sendData appendData:imageData];
    [sendData appendData:[sendDataStringNext dataUsingEncoding:NSUTF8StringEncoding]];
    
    // リクエストヘッダー
    NSDictionary *requestHeader = [NSDictionary dictionaryWithObjectsAndKeys:
                                   [NSString stringWithFormat:@"%lu",(unsigned long)[sendData length]],@"Content-Length",
                                   [NSString stringWithFormat:@"multipart/form-data;boundary=%@",boundary],@"Content-Type",nil];
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urlString]];
    [request setAllHTTPHeaderFields:requestHeader];
    [request setHTTPMethod:@"POST"];
    [request setHTTPBody:sendData];
    
    [NSURLConnection connectionWithRequest:request delegate:self];

次にアップロード画像の保存について記載します。
前々回と同じ内容になります。

<?php
if (is_uploaded_file($_FILES&#91;"postfile"&#93;&#91;"tmp_name"&#93;)) {
    if (move_uploaded_file($_FILES&#91;"postfile"&#93;&#91;"tmp_name"&#93;, "file/" . $_FILES&#91;"postfile"&#93;&#91;"name"&#93;)) {
        echo "File uploaded successfully";
    }
}
?>

それでは実際にためしてみましょう。
動画撮影中は指定したフォルダに入ってくると思います。
ただ、現状だとアップされる画像の頻度が遅いため、同期でアップしているのか、
フレームの保存に時間がかかっているのかを次回以降、調査していこうと思います。

以上で画像をサーバーにアップロードする方法についての紹介でした。
最後までご覧いただきありがとうございました。

■アップロードした画像


弊社では全国各地の請負い(ご自宅)で作業協力頂ける、フリーランスエンジニアの方を常時探しております。
ご興味ある方は、お気軽にお問い合わせ下さい。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*