今回はノンリニアビデオ編集ソフトウェアであるKdenliveを使い、映像圧縮にH.264(MPEG-4 Advanced Video Coding)、音声圧縮にAAC(Advanced Audio Coding)を利用し、MP4コンテナにデータを突っ込んだビデオを作成する方法をお届けします。
ノンリニアビデオ編集とは
ノンリニアビデオ編集は、デジタル化したビデオ情報をソフトウェア的に加工していく方法です。
「ノン」というからにはリニアなものもあり、こちらはビデオ情報をテープに記録して扱う場合の編集方法です。テープを再生するためのデッキと録画するためのデッキの2台を用意し、必要な箇所だけを成果物となるテープにダビングしていきます。
ノンリニアビデオ編集のほうがより自由度の高い編集が可能ですが、映像と音声がセットとなったビデオ情報をコンピュータで扱うため、その分、ある程の性能でなければ作業効率が落ちることに注意してください。
Linuxで利用できるノンリニアビデオ編集ソフトウェアは、本連載の第104回で扱ったPiTiVi、UbuntuではPPAから利用可能なCinelerra、2008年にプロジェクトがスタートし猛烈な勢いで開発が進んでいるOpenShot Video Editor、VJ(Visual Jockey)ソフトウェアでもあるLiVES、そして今回紹介するKdenliveがあります。
Kdenliveとは
KdenliveはK Desktop Environmentのソフトウェアのひとつです。データの処理にMedia Lovin' Toolkitの提供するフレームワークを利用しています。KDEソフトウェアではありますが、もちろんUbuntu標準のGNOMEデスクトップ環境でも利用することができます。
画面は、筆者が2009年に2次利用によるMADを作成した際のプロジェクトを開いたものです。素材として使用させていただいたオリジナルは、権利侵害を指摘されて削除されてしまい、もうありません。筆者はオリジナルの作者ではないですが、とても悲しかったことを覚えています。
さてkdenliveを利用するには、パッケージ「kdenlive」をインストールします。同時に、KDE由来のパッケージが複数インストールされるほか、以下のような主要機能となるパッケージがインストールされます。
- Media Lovin' Toolkitのパッケージ「melt」
- ビデオレンダリングとv4l2を使ったキャプチャーのためのパッケージ「ffmpeg」
- ffmpegライブラリのひとつで、ビデオファイルのデコード/エンコードのためのパッケージ「libavcodec52」
- DVカメラからのキャプチャーのためのパッケージ「dvgrab」
- デスクトップ映像のキャプチャーのためのパッケージ「recordmydesktop」
- 映像効果のためのパッケージ「frei0r-plugins」
- 音声効果のためのLADSPAパッケージ「swf-plugins」
Kdenliveを初回起動すると、まず「Config Wizard」が起動し、現在のシステムで利用可能な機能をひと通り見ることができます。特に「Available Codecs(avformat)」タブでは、利用可能な圧縮方法を映像/音声/コンテナ別に見ることができます。しかしH.264はありません。Ubuntuの標準状態でインストールされる「libavcodec52」では、H.264を扱えないためです。
映像・音声周りの技術とパテント
H.264という「技術」は開発した団体がパテントを保有しており利用許諾が関係してきます。今回利用する音声圧縮方法であるAACも同様です。映像・音声関連の技術はこのように利用許諾が関係するものが多く、Ubuntuのパッケージ「libavcodec52」はこういったものに「触れない」パッケージとしてリリースされています。
筆者が許諾規定を調べてみたところこの2つの技術は、私的複製に使用するか、インターネット上で無料で配布するビデオに使う限りは問題がないことがわかりました[1]。この2つの条件の下であれば、Ubuntuでも安心して使って大丈夫です。
それではUbuntuでこれらを使うにはどうしたらいいかと言うと、「libavcodec52」の代わりに「libavcodec-extra-52」をインストールします。「libavcodec-extra-52」はmultiverseリポジトリに収められているため、あらかじめ、「ソフトウェア・ソース」ウィンドウでmultiverseリポジトリを有効にしておいて下さい。
「libavcodec-extra-52」は依存関係により、H.264のオープンソース実装を含むパッケージ「libx264-106」もインストールします。インストールが終了したら、再度設定ウィザードを実行するために、kdenliveの「Settings」メニューから「Config Wizard」を選択します。リストに「libx264」が登場します。ffmpegの状態を変化させる度にこの作業が必要となりますので、覚えておくとよいでしょう。
さて、Kdenliveの一般的な使い方は以下となります。
- 出力プロファイルの設定
- クリップの作成
- クリップのクリッピング
- タイムラインにクリップを配置
- クリップにエフェクト設定
- トランジションでクリップ合成
- レンダリングでデータ出力
順を追って見てみましょう。
出力プロファイルの設定
出力プロファイルというのは、作成するビデオそのものに関する設定です。メニュー「Project」の項目「Project Settings」で表示できます。プルダウンリスト「Profile」から、使用したいプロファイルを選択します。作業途中に変更するとそれまでの内容が崩れてしまうので、あらかじめ決めておくのが無難です。
もし好みのプロファイルがなければ、自分で作成することになります。この場合は、メニュー「Settings」の項目「Manage Project Profiles」で行います。
普通のユーザにとって配慮すべき設定項目は、「Size」、「Frame rate」となるでしょう。それ以外の設定項目は放送に関するまとまった知識を必要としますが今回は放送が目的ではないので、「Pixel aspect ratio」には「1/1」を、「Display aspect ratio」には「16:9」あるいは「4:3」を、「Colorspace」は標準的な色再現域sRGBのルーツとなっている「ITU-R 709」を指定し、「Progressive」を有効にするのがよいでしょう。
クリップの作成
クリップは動画編集のための素材です。「Project Tree」ウィンドウでビデオ/音声/画像ファイルをインポートできるほかkdenliveのプロジェクトファイルをインポートできます。「Record Monitor」ウィンドウではUSBカメラやDVカメラ、ビデオキャプチャーボードから映像データを取得したり、recordmydesktopを利用してデスクトップ描画をキャプチャーしてクリップを作成できます。
クリップのクリッピング
クリップから必要な部分だけを切り出す作業です。「Clip Monitor」ウィンドウでクリップを再生しながら、ボタン「[」で開始点を、ボタン「]」で終了点を指定し、「Clip Monitor」ウィンドウからのクリックアンドドラッグでタイムラインに配置します。
タイムラインにクリップを配置
kdenliveのタイムラインは映像・音声別のマルチトラックとなっています。タイムラインにクリップをクリックアンドドラッグして配置します。この際、配置したクリップ上の右クリックメニューで項目「Split Audio」を選択し、映像と音声を分離してトラックに配置することができます。分離したクリップの映像と音声はクリップとしてグループ化されているため、同じく右クリックメニューの項目「Ungroup Clips」で解除ができます。
クリップにエフェクト設定
タイムラインに配置したクリップを選択した場合に、「Effect Stack」ウィンドウで、選択しているクリップにエフェクトを適用することができます。適用している順番を入れ替えることで、面白い効果を出すことも可能です。
「Effect List」ウィンドウで、一覧と簡単な説明を見ることができます。
トランジションでクリップ合成
トランジションは聞きなれない単語ですが、クリップとクリップを合成することを意味します。GIMPやInkscapeといったグラフィック系ソフトウェアにおける、レイヤー間の加算(addition)合成や色相(Hue)合成と同じことが、クリップ間でできると考えて下さい。加えて、クリップをスライドして合成したり、クリップの移り変わりに装飾を追加するといった動きのあるトランジションを行うこともできます。
トランジションを加えるには、タイムライン上のクリップの左下または右下をクリックします。トランジションを選択すると、「Transition」ウィンドウでその詳細を設定することができます。
プルダウンリスト「Type」でトランジションの種類を指定します。動きのないトランジションは先頭が小文字で、動きのあるものは先頭が大文字で始まっています。同じくプルダウンリスト「with track」で合成先のトラック番号を指定します。「Auto」となっている場合は自動的に下にあるクリップに合成するか、クリップがなければ黒の映像があるとして合成します。
トランジションの中にはCompositeやRegionのように、キーフレームを設定することができるものもあります。キーフレームもまた聞きなれない単語ですが、トランジションのパラメーターを時間的に変化させるための仕組みと考えて下さい。
レンダリングでファイル出力
「Project Monitor」ウィンドウでここまでの作業結果を見ることができます。
納得いくビデオができたら、それをファイルとして出力します。これをレンダリングと言います。
「Clip Monitor」と同じように操作して、先に「Project Monitor」ウィンドウで出力したい時間帯を指定しておきます。もちろん全体を出力することもできます。
画面上部のボタン「Render」をクリックし、「Rendering」ウィンドウを開きます。レンダリングはmltフレームワークを通じてffmpegに処理させるため、そのプリセットを指定します。動画共有サイトで利用可能なフォーマットをあらかじめ調べておいて下さい。すでに主要なプリセットが登録されていますが、自分専用プリセットを用意することもできます[2]。
メニーコアなシステムを使っている場合は、項目「Encoder threads」で利用するスレッド数を選択できます。処理を分散してレンダリングにかかる時間を短縮することができます。
「Render」ウィンドウ下部で出力時間帯を「Full project」や「Selected zone」から選択したら準備完了です。ボタン「Render to file」でレンダリングを開始して下さい。ファイルはウィンドウ上部のテキストボックス「Output file」に出力されます。
こうして出力したファイルは、日本国内法とサービス提供者の規約に従い、他人の権利を侵害しない限りは動画共有サイトにもアップロードが許されます。その際、フォーマットが合わずに再エンコードの憂き目に合う場合もありますが、その場合はffmpegのマニュアルを参照してレンダリングのプリセットを変更するなどして対応して下さい。
筆者が今回使っていて感じたのは、kdenliveやmltフレームワーク、ffmpegが2009年当時から進化し、とても使いやすく高機能となっていることです。今後の発展がますます楽しみです。