- 締切済み
フレームレートをいくつにしたらよいか
フレームレートをいくつにしたらよいか教えていただけると幸いです。 下記プラグインを使ってp5jsを動画にしてNFT販売したり、ユーチューブにアップロードしたいです。 https://zenn.dev/tapioca/articles/a997c9e6f730b1 フレームレートが選べるようですがどれくらいにするとよいのか見当がつかないので教えていただけると幸いです。 NFT販売するのでできるだけ最高画質にしたいです。 最後に他にもこだわらないといけない設定があれば教えてください。 60で十分でしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- MT765
- ベストアンサー率57% (2080/3618)
>最高画質 私は3DCG系の人間ですのでp5.jsには詳しくなかったのでちょっと調べてみました。 元のp5.jsのコードで設定した画像サイズよりプラグインでwidthを大きくしたり、フレームレートを大きくしても画質は悪化すると思われます。(無理に引き伸ばすため) なのでプラグイン側で設定するフレームレートはもとのフレームレートと同じ、widthも元のcanvasサイズと同じにしてください。 記入されたコードでキャプチャするにはcanvasサイズを3840、フレームレートを60にする必要があります。 120fpsにする場合は元のコードを120fpsにしてください。 このプラグインではp5.jsが生成したベクター画像をラスターイメージとして保存するのでどのくらいキレイにラスター化するかがqualityの設定です。 1が一番良いのでとりあえず1で試して動作がきつければ下げていく感じです。 >フレームレートはいくつになるか そのコードで録画すると100フレーム分が録画されますよね。 ですので60フレームを5秒間キャプチャするためにはdurationは300にすればよいということになります。 120fpsであれば600です。 どちらにしてもプラグイン側の出力は不可逆圧縮なのでもともとの画質を超えることはできません。 高画質化のためにはプラグインを通す前の段階で高画質になるようにコードを記述してください。 ちょっと急いで頭に詰め込んだので理解が違っている部分があるかもしれませんがご容赦ください。
- MT765
- ベストアンサー率57% (2080/3618)
動画の内容にもよりますが動きが速いような映像でしたら60fpsで。 比較的ゆったりしていれば30で十分です。 画質についてはプラグインのクオリティ設定からまずは最高で試してみて問題あるようなら徐々に下げていって閾値を見つけるのがよさそうです。 非公開でYouTubeで試してみればよいでしょう。
お礼
recording quality from 0 (worst) to 1 (best). (only available for WebM/GIF/JPG/WebP) とあるので最高画質は下記で良いでしょうか? P5Capture.setDefaultOptions({ format: "mp4", framerate: 60, quality: 1, width: 3840, }); quality: 1,をなしのデフォルトでやったら動きが激しいせいかひどい画質で余韻のような物が動いた時の残ります。 この場合は120が良いという事ですよね。
補足
また始めから5秒後くらいに終了させたい場合は function draw() { if (frameCount === 1) { const capture = P5Capture.getInstance(); capture.start({ format: "gif", duration: 100, }); } // do something... } フレームレートの数字はいくつになるかわかるのでしょうか?120でやってみますが秒数での指定は出来ないのですね。
お礼
ありがとうございました。 おそらく下記でOKですね <script> P5Capture.setDefaultOptions({ format: "mp4", framerate: 120, // duration: 100, quality: 1, width: 3840, }); function setup() { // createCanvas(340, 340, WEBGL); createCanvas(3840, 3840, WEBGL); // frameRate(60); //frameRate(120); } function draw() { capture.start({ format: "mp4", duration: 600, }); background(0); } </script>