3DCGで何をどう作るか考え中

ZbrushとBlenderの使い方、ヒント、コツなど。たまにZbrushプラグイン開発も。

PowerDirector 365のカット編集後のレンダリング結果に余計なフレームが残る

(約 4,200文字の記事です。)

f:id:yamato-tsukasa:20210516012031p:plain

楽しみにしていたPowerDirector 365(Ver. 19.3.2724.0)を購入していざ使ってみると、とんでもない致命的なバグを発見した。これの検証に合計で4日間も持っていかれた。

頼むよサイバーリンクさん、ちゃんとバグを直して頂戴!

なおバグ報告が面倒なのでこのブログのURLをそのままサポートに送付しました。

2021/06/01 追記
サポートからの返答とは別に、自力で回避手段を見つけました。
結論としては回避できます!!!

更新履歴

2021/06/01 バグ修正方法を追記
2021/05/16 執筆

バグの回避方法

記事はこちら。

PowerDirector 365のレンダリング出力時のフレームレートに注意 - 3DCGで何をどう作るか考え中

PowerDirector 365の入手先

PowerDirectorの入手先はこちら。( Mac対応版はこちら

PowerDirector 365(Windows版)

サイバーリンク

バグの再現のための下準備

プロジェクト設定は30 FPS (NTSC)です。

分かりやすいようにノンドロップフレーム(セミコロンじゃなくてコロンの表示)にしています。フレームとタイムコードの関係が一致するので解説しやすい。

f:id:yamato-tsukasa:20210516021231p:plain

まずは以下のようにテンプレ動画のスケートボード少女をタイムラインに乗せる。

f:id:yamato-tsukasa:20210516023251p:plain

次にタイムコードを画面に埋め込む準備。

f:id:yamato-tsukasa:20210516013855p:plain

タイムスタンプエフェクトをタイムライン動画の上にD&Dする。後はお好みでフォントの大きさや表示位置を調整すればいい。

なお、全体の尺が長くても検証に無駄に時間がかかるだけなので、せいぜい10秒分の長さにカットしてOK。10秒ジャストの尺にすると画面上には9秒29フレームでおしまいとなる。(0秒0フレームが1つ目のフレームだから)

f:id:yamato-tsukasa:20210516014315p:plain

これを一度レンダリング出力する。どんなファイル形式でもいいが、まずは無難に普通のH.264のCPUレンダリング出力でいい。

2021/06/01 追記

この症状を再現するためには、レンダリング出力時のfpsを「29.97fpsではなくて30.00fps」に設定すること。ここが重要。(逆に29.97fpsだと正常動作する)


実はこのファイル形式の他にもあらゆるファイル形式だったりNVEncだったり、ものすごい組み合わせを全部試しましたとさ。。。

ぶっちゃけ、どんな出力手段を試しても問題が再現すると思います。

【バグその1】出力ファイルの頭に1フレーム追加される

出力されたmp4動画をタイムラインに下のトラックに乗せてみよう。Homeキーで先頭にカーソルを移動させ、タイムラインを最大ズームにする。そしてカーソルを1フレームずつ右に動かしてみると!

画像の上側が編集時点の元の動画、下側がレンダリング結果。

f:id:yamato-tsukasa:20210516015504p:plain

1フレーム右に進めても0秒0フレームってことは、頭に1フレームの余計な静止画フレームが入っているわけ。

つまり、レンダリング結果の動画ファイルの先頭に1フレームの静止画フレームが余計に挿入されている!!!!

あ、ありえない。有料の動画編集ソフトでしょ?

2021/06/01 追記
実はこれはフレームレート変換時のフレームシフトの結果。次の章の末尾欠落も同じ理由。だがソフトとしてはやはりバグだと思う。

では後ろはどうなっているのか?

【バグその2】出力ファイルの末尾の1フレームが欠落している

f:id:yamato-tsukasa:20210516015749p:plain

はい、想像通り1フレーム欠落しています。結果として全体の尺は10秒ジャストになっているわけ。

これだけでもう、動画編集ツールとしては致命的ですよ、サイバーリンクさん!早く直して~。






とりあえず話を進めるために、頭1フレームをカットして左に詰めて、動画の数字とタイムライン上の数字とを揃えることにする。

f:id:yamato-tsukasa:20210516020253p:plain

で、5秒ジャスト、7秒ジャストにカット線を入れる。

f:id:yamato-tsukasa:20210516024451p:plain

数字に大した意味はないが、0秒付近に近いほど誤差が小さいので5秒以上経過した素材で試すこと。そうしないとバグが再現しない場合がある。

中間の素材を削除して左に詰める。

f:id:yamato-tsukasa:20210516020746p:plain

カット点を最大ズームして1フレーム左に動かすと、タイムライン上はこうなって見えるし、それが正しい。

f:id:yamato-tsukasa:20210516020952p:plain

カット線の1フレーム左側が4秒29フレーム。そしてカット点が7秒ジャスト。

ところがこれをレンダリングすると奇妙なことが起こる。動画でレンダリングしても同じ結果になるのだが、ここでは確認しやすいように「範囲指定」した上で静止画で出力してみよう。

f:id:yamato-tsukasa:20210516021712p:plain

【バグその3】カット編集時の継ぎ目のフレーム処理が異常

正確に言えば「カットした素材の末尾の次の1フレーム」がその後のカット素材の「先頭の1フレームを上書き」する。ちょっとややこしいので図で説明。

本来はこうあるべきだが、

f:id:yamato-tsukasa:20210516020952p:plain

実際の静止画出力はこちら。

f:id:yamato-tsukasa:20210516022028p:plain

カットしたはずの5秒0フレームがレンダリングされ、あったはずの7秒0フレームを上書きしている。これはとても致命的。特に業務用途で使おうと思っている人にはとても困る。たった1フレームでも、シーンの切り替わりに「見えてはいけないもの」が入ってしまうと、それは大問題なわけ。

納品後に発覚した日には目も当てられない。

たかが1フレームでも、業務として動画を扱うプロであれば決して許されないのだ。

今回、残念ながらPowerDirector 365の2021/05/16現在の最新版では、悲しいことにこのバグが発覚した。

2021/06/01 追記

これも結局はレンダリング時のフレーム変換(29.97fpsから30.00fpsへの変換)によってフレーム絵が前後に1フレームシフトしたままレンダリングされた結果。これはPowerDirector自体のアルゴリズム上のバグだと思う。なぜタイムライン上の素材をフレーム変換してからレンダリングするのか?
他の動画編集ソフトではフレームレート変換でこのようなことは起こらない。PowerDirectorの初歩的なアルゴリズム上のバグだと、個人的には思っている。

レンダリング形式に依存せず共通で発生するバグ

最初はNVEncのせいか?mp4のパラメータ指定とPowerDirectorとの相性があるのか?などなど、色々と試した結果、どうやらPowerDirector自体のタイムライン処理の実装状のバグっぽい、という結論に辿り着いて、実験を打ち切ることにした。まさか動画編集ソフトで1フレームを正確に扱えない事象は、全く想定もしていなかったからだ。

だからファイル形式の迷路にはまり込んでたくさんのテストに4日間も持って行かれたわけだが、まさか灯台もと暗しだったとは……。

静止画レンダリングで再現した段階でビンゴです。致命的です。どんなレンダリング手段を使っても必ずカット編集時に1フレームの「見えてはいけない絵」が見えることになります。残念ながらシビアなカット編集はできません。(後ろ1カット余計にのりしろを作ってカットするしかない。)

ちなみにカット編集部位が増えるほど、レンダリング結果の動画の尺は数フレーム以上伸びます。実験済み。

スクショは省略です。疲れすぎた……。

【まとめ】PowerDirectorのタイムライン素材の先頭と末尾の扱いに致命的なバグがある

なのでシビアな1フレーム単位の編集はPowerDirector 365では「今のところ」できないと思った方がいい。今後、バグが修正されればできるのだが。

というわけでこの記事はユーザーサポートへのバグ報告を兼ねて全体公開しています。

2021/06/01 追記

一応、今すぐ回避する方法が分かったので記事にしました。

PowerDirector 365のレンダリング出力時のフレームレートに注意 - 3DCGで何をどう作るか考え中

改めて考えても、やはりPowerDirectorのレンダリング出力に関する実装上のバグだと思う。





今回の創作活動は約8時間30分(累積 約2,391時間))
(721回目のブログ更新)

筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonで何かを買うと購入額の1~3%ほどのお小遣いが私に寄付されます(笑)