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

前回は、iPhone端末からフレーム画像をアップロードする際の改善方法についてご紹介しました。
今回は、実際にアップロードした画像から動画を作成してみたいと思います。

本記事の最終目的は、ストリーミング再生なので、動画を複数作成して、順次再生する必要があります。
※こちらは、現状の予定なので、今後方針が変更になるかも知れません。

対応する方針としては、下記となります。
・アップロードされた画像を50枚単位でディレクトリを作成し格納
・格納後、ディレクトリに格納されている画像から動画を作成
・動画を作成後、ディレクトリ内にある画像は不要なので、削除

それでは、実際にサーバへアップロードした画像から動画を作成してみましょう。

<アップロードされた画像から動画を作成する方法>
【前提条件】
 ・開発環境は、前回作成したプロジェクトを利用すること
 ・サーバ環境は、MAMP
  ※Windowsの方は、XAMPでも可

【手順1】
 サーバへアップロードされた画像から動画を作成します。
 上述した対応方針に従って、プログラムを作成しました。
 ※画像の保存方法や動画の作成する方法は、[Oculus]3D動画をストリーミング再生する方法 – 4 –
  詳しくご紹介しているので、そちらを見ていただければと思います。

 <?php
    $flg = true;
    
    if(is_uploaded_file($_FILES&#91;"postfile"&#93;&#91;"tmp_name"&#93;)) {
        //ディレクトリ名を作成する
        $num = intval(str_replace(".jpg", "", $_FILES&#91;"postfile"&#93;&#91;"name"&#93;));
        $directoryNumber = floor($num / 50);
        
        //ディレクトリパスを作成する
        $directoryPath = "/Applications/MAMP/htdocs/upload/file/" . $directoryNumber;
        
        //ディレクトリが存在するかチェックを行う
        if(!file_exists($directoryPath)) {
            //ディレクトリを作成する
            if(!mkdir($directoryPath, 0777)) {
                $flg = false;
            }
        }
        
        if(true == $flg) {
            $fileName = $_FILES&#91;"postfile"&#93;&#91;"name"&#93;;
            if(49 < $num) {
                $fileNum = $num - ($directoryNumber * 50);
                $fileName = sprintf("%08d.jpg", $fileNum);
            }
            
            //動画を保存する
            if (move_uploaded_file($_FILES&#91;"postfile"&#93;&#91;"tmp_name"&#93;, $directoryPath . "/" . $fileName)) {
                echo 'image save success!!!';
            } else {
                echo 'image save not success!!!';
            }
            
            //1つ前のディレクトリ名を取得する
            $directoryForMovie = $directoryNumber - 1;
            
            //動画を作成する
            if(0 <= $directoryForMovie) {
                $imageDirectoryPath = "/Applications/MAMP/htdocs/upload/file/" . $directoryForMovie;

                //ディレクトリが存在するかチェックを行う
                if(file_exists($imageDirectoryPath)) {
                    exec("ffmpeg -r 30 -i " . $imageDirectoryPath . "/%08d.jpg /Applications/MAMP/htdocs/upload/movie/" . $directoryForMovie . ".mp4");
                    
                    //ディレクトリ毎削除する
                    foreach(glob($imageDirectoryPath . "/*") as $file) {
                        if(is_dir($file)){
                            removeDir($file);
                        }else{
                            unlink($file);
                        }
                    }
                    rmdir($imageDirectoryPath);
                }
            }
        }
    }
?>

これで、アップロードされた画像から動画を作成するプログラムが完成しました。
それでは、実際にiPhoneからアプリを起動して動作確認をしてみましょう。

【手順1】
 「動画撮影開始」ボタンをタップし、カメラを起動します。
 
 

【手順2】
 画面が表示されます。

 

【手順3】
 サーバに動画が作成されていることを確認します。

  
 
お疲れ様でした。
アップロードされた画像から動画を作成することができたので、今回は終了いたします。
最後までご覧いただきありがとうございました。


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


コメントを残す

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

*