前提・実現したいこと
Unityを用いてZoomのバーチャル動画背景を生成するツールを作ろうと考えています。
OpenCV for UnityというアセットのVideoWriter関数を用いて動画を保存しようとしております。
現在は.avi形式であれば動画を出力できるのですが、.mp4または.mov形式でなければならないです。
拡張子の名前を変えるのではなく、動画を保存するときのコーデックを変更しなければならないようです。
試したこと
以下のサイトに、(私が現在使っているものと同じ)「OpenCV for Unity」を使って.mp4の形式で動画を保存する方法を説明した記事がありました。
http://takashicompany.hatenablog.com/entry/2017/12/02/172136
ocv.VideoWriter.fourcc('M', 'P', '4', 'V'), // 動作環境にあわせてコーデックを変える
これを参考にしたのですが、うまく動作しませんでした。
VideoWriterが開けないというエラーが出ました。
writer.isOpened() false UnityEngine.Debug:LogError(Object) OpenCVForUnitySample.VideoWriterPathDecided:StartRecording(String) (at Assets/Aguro/Scripts/VideoWriterPathDecided.cs:195) OpenCVForUnitySample.VideoWriterPathDecided:OnRecButtonClick() (at Assets/Aguro/Scripts/VideoWriterPathDecided.cs:314) UnityEngine.EventSystems.EventSystem:Update() (at /Applications/Unity/Hub/Editor/2019.4.2f1/Unity.app/Contents/Resources/PackageManager/BuiltInPackages/com.unity.ugui/Runtime/EventSystem/EventSystem.cs:377)
以下がエラーが発生するVideoWriterPathDecided.cs:195のプログラムです。
C#
1writer.open(savePath, VideoWriter.fourcc('M', 'P', '4', 'V'), 30, new Size(Screen.width, Screen.height));
以下のプログラムでは.avi形式ではあるのですが、エラーが無く保存できました。
C#
1writer.open(savePath, VideoWriter.fourcc('M', 'J', 'P', 'G'), 30, new Size(Screen.width, Screen.height));
以下のサイトに、コーデックの一覧表がありました。
(OpenCV for Unityではなく、pythonやC++を用いたOpenCVの対応表のようです。ですが、OpenCV for Unityでも同じだと思っております。)
https://qiita.com/MuAuan/items/5d968d41e993848a4332
MJPEGの.aviであれば保存できました。
MP4SやMP4Vの.mp4や、mp4vの.movだとエラーが発生します。
補足情報(FW/ツールのバージョンなど)
Unity2019です。
私の説明不足な点があるかと思いますが、質問していただけると助かります。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー