質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

Q&A

0回答

2153閲覧

WebGL上のUnityで生成した.aviの動画データを、ffmpeg.js wasmに渡して、.aviから.mp4に変換したいです。

aguroshou0413

総合スコア20

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

WebGL

WebGL(ウェブジーエル)は、ウェブブラウザで 3次元コンピュータグラフィックスを表示させるための標準仕様です。

FFmpeg

FFmpegは、動画と音声を交換できるフリーソフトウェアです。UNIX系OSから派生した、MS-DOSから操作するコマンドラインツールです。libavcodecやlibavformat、libswscale、libavfilterなどを含みます。ライセンスは、コンパイルの際のオプションによりLGPLもしくはGPLに決定されます。対応コーデックや使用できるオプションが多く、幅広く利用されています。

0グッド

0クリップ

投稿2020/10/30 04:57

前提・実現したいこと

ブラウザ上で動画を作成するサービスをUnityで制作しようとしています。

Unityで、OpenCV for Unityのアセットを使い、ブラウザ上で.avi形式の動画ファイルを生成することができます。
生成した.avi形式の動画ファイルをローカルに保存することもできています。

.avi形式の動画ではなく、.mp4などの形式の動画にしたいです。
OpenCV for Unityのアセットのサポートセンターのようなところで質問したところ、WebGLビルドで.mp4の形式の動画を作成することはできないと回答をいただきました。なので、別の方法を用いて.aviから.mp4に変換する必要があります。

ffmpeg.js wasmを利用すると、ブラウザ上で.aviから.mp4に変換できることを知りました。
https://codepen.io/mr1985/pen/jOWVeGN?editors=1000
GitHub Pagesでも試してみて、動作することを確認しました。

現在は、ブラウザ上のUnityから.aviの動画を一度ローカルに保存し、それから、.aviの動画をブラウザ上に読み込み直し、ffmpeg.js wasmを用いて.mp4に変換することはできています。

実現したいことは、一度ローカルに動画を保存することはせず、ブラウザ上でそのまま.aviから.mp4に変換することです。

発生している問題

https://aguroshou.github.io/ffmpeg.js_test/
こちらのサイトに、テストとしてOpenCV for Unityを入れたビルドデータと、ffmpeg.js wasmを入れています。
データを配置する位置が調整できていません…。申し訳ないです。
Chromeの拡大縮小機能で33%程度にするとうまい具合に表示されるはずです。

上の方にあるUnityのビルドデータについて
Recボタンを押すと、.aviの動画が生成され、もう一度Recボタンを押すと、録画を終了します。
Playボタンを押すと、生成された動画が再生されます。
この動画をローカルに保存する機能は、今回はない状態です。他のデータで確認をしました。

Playボタンの下に「/idbfs/英数字の羅列/VideoWriter_Example_out.avi」というパスが表示されていると思います。
この動画データをffmpeg.js wasmで読み取りたいのですが、どうすればよいのか分かりません。
Chromeのデベロッパーツールを用いて調べてみましたが、Application->Storage->IndexedDB->idbfs以下に動画データがある可能性があります。ですが、動画の保存方法が分かりません。
イメージ説明

下の方にあるffmpeg.js wasmについて
Chromeの拡大縮小機能を用いて、縮小をしないと、(動画を選択するための)ファイルを選択ボタンが表示されない状態になっています。
.aviのファイルを選択すると、.mp4に変換されて動画が表示され、保存することもできます。

ファイルを選択するボタンの代わりに、Unityで生成した.aviの動画があるindexedDBにアクセスしなければなりませんが、その方法が分かりません。

試したこと

http://vr-lab.voyagegroup.com/entry/2017/06/26/120251
こちらのサイトに、indexedDBにある動画を読み込むといったことが書かれており、とりあえずGitHubからプログラムをダウンロードしてサンプルと同じことを試そうとしましたが、うまく動作しませんでした。(私の設定が悪いのだと思っています…。)
このサイトにあるサンプルでは、indexedDBに保存される.avi形式の動画の保存されるデータの形式?が異なるようでした。
イメージ説明

補足情報(FW/ツールのバージョンなど)

非常に分かりづらい文章ですみません…。後ほど修正しようと思っています。
補足すべき点を教えていただければ、その点を重点的に修正しますので、よろしくお願いします。
MacBook Proでプログラムなどの編集をしています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問