Video

PeloReaper Extensionの情報やダウンロードはこちらからどうぞ。
PeloReaper Extension for REAPER is here.
ReaperBanner01_50p

REAPERで動画編集:動画再生CODEC確認方法など

動画再生時にうまく絵が出ないとか、何かしらCODECに不具合が生じたことはありますでしょうか?
と書き始めながら、自分はそういうのに出くわしたことがないんですが・・・(汗)

原則としてこちらの記事で紹介しているVLC、FFmpegを適切にセットアップ(REAPERが認識)しているという前提ですが、万が一おかしい状況が出てきたら問題を特定する方法は知っておきたいところです。

そんな時に役立ちそうな以下のTIPSを今回はご紹介します。

※ちなみに今回紹介しているこれらの内容は「動画再生時」に使われるCODECの話で、動画の書き出しには関係ありませんのでご注意ください。


動画ファイルの再生に利用されているCODEC確認方法

タイムライン(Arrange View)上に動画ファイルをドロップするとVideo Itemが出来て、動画再生出来るようになりますが、このVideo ItemのSource Propertyを見ることで、VLC・FFmpegいずれでこの動画を読み込んで再生しているかが分かります。

Video Itemを右クリック>Source properties...
↑ Video Itemを右クリック>[Source properties...]

VISrc_VLC02
↑ VLCで読み込まれていることが分かる

ここで例えばVLCで再生がうまくいかないという場合、FFmpegで再生してみたいと思うかもしれませんが、どうすればよいでしょうか。わざわざVLCをアンインストールするのも手間がかかります。

この場合、次節のCODECの優先順位変更でFFmpegを優先するのも一つの方法です。


使用されるCODECの優先順位変更方法

REAPERのPreferences(メインメニューの[Options>Preferences...])で[Video/import/Misc]に[Video decoder priority]という項目があります。ここに記述されている内容の順番で、動画のデコードに使用されるCODECの優先順位が決まります。順番として最初の方に書かれているものの方が優先されます。

PrefVideo02

デフォルトではVLCが優先されているので、これをFFmpeg優先に変えてみましょう。

PrefVideo03

これでPreferencesウィンドウの[OK]ボタンで確定し、REAPERを起動しなおします。そしてVideo Itemの[Source properties...]を見てみると、FFmpegで動画がロードされていることが分かります。

VISrc_Ffmpeg02
↑ FFmpegで読み込まれている

このようにして読み込みを行うCODECの切替を行ってみることで、「VLCではダメだったけど、FFmpegでは問題なし」などのように動画再生に問題がありそうな箇所を絞り込んでいくことが出来そうです。

この優先順位をいろいろいじってしまって元の順番が分からなくなったという場合は、右側にある[Reset to default]ボタンで元に戻せますから、問題が出た時はいろいろ試してみると良いかと思います。


REAPERで動画編集:Blur系・MonitorFX専用効果など

REAPER v5.97以降で追加されたVideo Processor(以下VP)のプリセットで、まだ取り上げていなかったものを紹介します。

Blur(ぼかし)系効果

画面全体をぼかすBlur効果が追加されました。Gaussianとlow qualityがありますが、後者は軽量版のようです。

  • 元の画像
    VP_ImgOrg
  • FX: Blur (Gaussian)
    VP_BlurGaussian01
  • FX: Blur (low quality)
    VP_BlurLowQuality01

この実装追加のため、VPのAPIである gfx_evalrect が改良されたようです。以前は左から右、上から下という方向にしかピクセル処理出来なかった気がしますが(あんまり覚えてないけど)、逆方向もフラグ設定でいけるようになった模様。

しかしまぁ以前からですが、ピクセル毎にスクリプトを走らせるような仕組みなのでとにかく重いですね。画像サイズによっては余裕のフレーム落ちです。あ、ちなみにこれはREAPER上でのリアルタイムプレビュー処理時のみの話なので、ファイルへレンダリングする場合の結果は問題なしです。

こういった定番の画像処理はもう手動でピクセル毎にスクリプト実行という方式じゃなくて、画像処理専用のAPIを用意してくれた方がいい気がします。そうすればSIMDやマルチスレッド化、GPU利用など内部で高速化の手法が使えますし、よくある画像効果なんてもう一から書きたい人いないでしょう? どうしても特殊なことをやるという時だけ、gfx_evalrectなどのような処理を書きたい感じ。

OpenCVとかなんかそういう系のライブラリでも組み込んでくれるといいんですけどねー。


画像のカラーヒストグラム表示

現在処理している画像のカラーヒストグラムを表示する機能も追加されています。

  • Analysis: Histogram (RGB)
    VP_Histogram01

[MonitorFX専用] 画像のピクセル色チェック機能

画像上の特定のピクセル色をVideo Window上で確認できるプリセットが追加されています。

このプリセットはMonitorFXにVPを挿入することを前提に作られています。MonitorFXはREAPERウィンドウ右上にある[MONITOR FX]のところをクリックして挿入できます。
MonitorFX01

このプリセットをMonitorFXで使うと、マウスカーソルをVideo Window上に持って行った時にそのカーソル位置での画像の色情報が表示されます。正確なカラー値を知りたい時に便利かもしれません。

  • Analysis: Color Peeker (Monitoring FX only)
    VP_ColorPeek01

[MonitorFX専用] スクリーンセーバー for Video Window

Video Windowにずっと同じ絵が表示されている状態を防ぐ、いわゆるスクリーンセーバーになるプリセットが追加されています。これもMonitorFX専用です。

[Timeout (seconds)]でスクリーンセーバー状態になるまでの時間を設定できます。

  • Utility: Screensaver (Monitoring FX only)
    VP_ScreenSaver01
    ※スクリーンセーバー状態になるとこんな感じ。色指定で少し緑色にしています

REAPERで動画編集:オシロスコープ・周波数スペクトル表示

音楽を再生するだけの動画などでよく使われる、装飾用の波形表示(オシロスコープ)や周波数スペクトル表示。いつの間にかREAPERのVideo Processor(以下VP)プリセットに追加されていました。

波形データを使った画像処理

そもそもオシロスコープや周波数スペクトルを表示出来るようにするためには、音声波形の情報をどっかから持ってこないといけないのですが、実はREAPER v5.97からそれを実現するための機能が実装されています。

JSFXの[JS: video sample peeker]が動画へ音声データを渡してくれるものになっており、このFXの次にVPを挿入してやることで、VP側で音声データを使った処理が行える訳です。

この順番でFXを挿入するとこんな感じ。
VP_VideoSamplePeeker01
2番目のFXはVideo Processorです(プリセットを切り替えたため名前が切り替わっている)。オシロスコープ・周波数スペクトルいずれもこの順で使うことが出来ます。


オシロスコープ

オシロスコープをもとにした映像効果を表示したい場合は、VPでプリセット [Synthesis: Decorative Oscilloscope with Blitter (requires JSFX video sample peeker)] を使用します。

[mode]パラメータで水平・垂直・極座標系の表示を切り替えられます。他にもいろいろパラメータがありますが、いじるとはっきり動きが変わるものが多く、さほど悩むことはないかと。
VP_OscilloscopeFX


周波数スペクトル

周波数スペクトルをもとにした映像効果を表示したい場合は、VPでプリセット [Synthesis: Decorative Spectrum Analyzer (requires JSFX video sample peeker)] を使用します。

このプリセットでは、同時に2つの方法で周波数スペクトルを表示出来ます。時系列のスペクトログラムが上側に、現在の瞬間的なスペクトルが下側に表示されます。[spectrogram size]の値を変えてやることで、画面上でのそれぞれのサイズの割合を変えたり一方だけを表示する事も可能。
VP_SpectrumFX



これらはシンプルなものではありますが、音声情報をもとにした映像効果を表示出来るようになったのはありがたいですね。

従来はVPが完全に描画プログラム用として閉じたシステムだったために、かなり制限が強い印象がありました。しかし、今回紹介したものを実現するための仕組み(具体的にはJSFXから共有メモリを使ってVPへデータを渡す仕組み)が新たに加わったことで、VPのプログラミングは恐らく別次元と言っていいほど自由度が高くなったと言ってもよいと思います(まぁそれを本気で使えば使うほどプログラミングが複雑化するのでアレですが)。

とはいえ、このあたりはまだしっかりと自分で検証出来てはいないので、どこまで出来るかはそのうちいいネタがあったら試してみたいですね。


このブログについて
ぺろりがREAPERで遊びたいというだけのブログかもしれない

必ずこちらをお読みください

twitter: @pelori

管理人用
  • ライブドアブログ