Linux/shotcutで動画編集

Googleアプリ動画の撮影と編集(2018-06-11、追記:2018-10-02)


Googleでアプリを公開する時に、動画もアップできるのですが、*1

アプリの動画を撮ってアップロードする作業って、
最初はものすごく難しいことだと思っていたのですが、
わりと簡単にできました。*2
もちろん動画の編集となると、ゴールが見えない作業、ではありますが...
(どの程度まで作りこめばなら合格ラインなんでしょうね?)

普段、動画編集ソフトとか使わないであろう私は、
半年後(数日後)くらいに「あれ、まず何からやるんだっけ?」になるに違いないので(なったので)、
少し実作業をメモしておきます。

Googleアプリ画面の録画

Android 4.4 以降の端末であれば、
Android SDK の adbコマンドで拾うことができます。
私は Android Studioでアプリ作れる状態なので
adbのインストール(Android SDKのインストール)やら
端末をLinuxに認識させるやらは、忘れてしまったので、済んだ状態からメモします。

使うのは、adb コマンドです。
で、やってたんですが、今はlogcatに録画ボタンがついてますね...それを押すだけ。
以下、参考までにメモは残しておきます。

...うちの環境だと ~/Android/Sdk/platform-tools/adb で、
使い方のオプションは adb --help でずらっと出てきます、が、
developer.aondroid.com でadb の説明呼んだほうがわか分かり易いかも。
とりあえず、

$ ~/Android/Sdk/platform-tools/adb shell screenrecord /sdcard/test.mp4

で、PCに繋いだ端末の/sdcard/test.mp4 に録画が始まります。
デフォルトの最大録画時間3分か、Ctrl + C で録画が止まります。
「adb pull /sdcard/test.mp4」でファイルを手元にコピーできますが、
その場合は、端末に残ったファイルを削除することも忘れずに。

余談として、作成までは流れ作業なので、 以下のような adb_do.sh みたいなの作りましたが、
その場合は Ctrl+C で止めることも考慮して作る必要があります。
(adb コマンドの次の行で mv とかしても、Ctrl+Cした行で shell は止まるので。
ちゃんと作りこむなら sh の trap 機能や kill コマンドを使って
Ctrl+C(SIGINT)をハンドリングしましょう)

#!/bin/sh
FILE=`date +%m%d_%H%M%S`
ADB=~/Android/Sdk/platform-tools/adb
$ADB shell screenrecord /sdcard/$FILE.mp4

注意点として、adb では音は保存できません。
(将来的には何か対応するのか、あるいはセキュリティ上やらないのか?)
必要に応じて、別途陽気なBGMとか用意しましょう。

shotcut のインストール

まず、Web検索するときは「"shotcut"」のようにダブルクォートで括らないと
検索結果に「ショートカット」がちょいちょい出てきて苛つくことのなるので、ご注意を。

うちの環境は Lubuntu 16.04 です
shotcut.org からファイルをダウンロードしてもOKですが、
snap コマンドで入れると楽そうなので、そうしました。
そして、うちの環境にはその、snapd がまだ入っていません。

$ sudo apt install snapd

私の場合は、一部必要なファイルが古くてinstallに失敗したりしたので、
apt-get updata してからやり直したりしました。
そして、snap を使って shotcut を入れます。

$ sudo snap install shotcut --classic

上のインストールコマンドも shotcut.org に書いてありました。
入れた後で再起動すれば、GUIのメニューに "Shotcut" が登録されました。

shotcut で動画を取り込む

shotcutのマニュアルって無いのかな?もっと探せばあるのかな?
動画なら shotcut.org にあるのですが...
大まかな流れが欲しかったので、以下にメモを残します。

とりあえず、ある動画から、2箇所のシーンを抜き取って、繋げます。

ファイルを開く

とりあえず起動して、動画ファイル(mp4など)をドロップします。
その時に出てくる、ファイルを変換しますか?とかは、よしなに。

範囲を指定する

shotcut はショートカットキーが便利ですが、
Web検索で shotcut の ショートカット とか検索しても
まともな検索結果が出ないのが、今回のメモを残した発端です [oh]
さておき、範囲指定しましょう。

Shotcut画像、範囲指定や再生は「キーボード」からできます

赤枠の範囲が、抜き出したいシーンの範囲になります。

Shotcut画像、せめて「i」と「o」は覚えておきたい

マウスで赤い選択枠を広げたり縮めたりもできますが、
キーボード「j, k, l」が「逆再生、停止、再生」で、
同じく「k+j, k+l」が「前、後ろコマ送り」です。

(あと、Alt、Ctrlキーと合わせて、
←(左)→(右)キーを押すのを覚えることになると思います。)

どこか適当な場所で「i 」で切り取り開始位置を指定して
しばらく進んで「o」 で切り取り終了位置を指定して、
切り取りたい場所を決めます。

タイムラインを追加する

「タイムライン」が表示されていない場合は、表示します。
「タイムライン」ボタンを押す or「View - タイムライン」を選択

Shotcut画像、タイムラインの表示


いま、範囲を指定した上の動画を、
下の「タイムライン に ドラッグ and ドロップ」します。
最初のタイムライン V1 ができました。

次に、2つの動画を重ねようと思うので、タイムラインV2 を追加します。
タイムラインで「右クリックして、ビデオトラック追加」or 「Ctrl + Y」です。

Shotcut画像、1つめのタイムラインの追加

それから2つ目の動画シーンを抜き出します。
上の画面に戻って、ソース、プロジェクトタブの「ソース」の方を選びます。

Shotcut画像、2つめのタイムラインを追加

そして、再び「再生停止(j, k, l)」や「フレーム送り(k+j, k+l)」しつつ、
「範囲指定(i, o)」する、あるいはマウスで範囲を広げたり縮めたりします。
再生が範囲境界線で止まっても、もう一度再生ボタンを押せばふつーに動きます。

そして、この範囲を今度は 「V2 にドロップ」します。
試しに、適当に重ねた位置に、ドロップします。

Shotcut画像、2つの連続したシーンを作成

この状態(タブはソースではなく、「プロジェクト」タブ選択)で動画を再生すると、
いま繋げた2つのタイムラインが連続で再生されます。

フィルタを付ける(とりあえずフェードイン)

タイムラインV2をフェードインさせます。
「フィルター」ボタンを押す or 「View - フィルター」で呼び出します。

Shotcut画像、フィルターを選択

下のタイムラインV2のフィルター対象を選んだ状態から
「+」ボタンを押した後、
「スクリーン画面っぽいマーク」を押してから、
スクロールしつつ探して「ビデオ Fade In」を選択します。

Shotcut画像、フェードインの追加

これでフェードインする状態にはなっているので、
あとは「デュレーション」で「ー」「+」を増減させるか、
下の「GUIで直接デュレーション位置をドラッグ」します。

Shotcut画像、フェードインにかける時間を調節

注意点として、
上の画像では「00:00:06:00」の部分。6秒のところ。
一番右の00は小数点以下(0.00秒)ではなく、フレーム数になっているところです。
1秒が何フレームなのかは動画の設定次第なのですが、とにかく、60で一秒ではないというのだけ覚えておいてください。


再び、上の画面に戻って
「プロジェクト」タブを選んで再生すると、
V1からV2へじわっと遷移する動画を見ることができます。

同じやり方で、今度はV1を選んで、「ビデオ Fade Out」を追加すると、
V1からV2へじわっと遷移する動画の完成です。

あとは
[ファイル]-[映像を書き出す] でファイルに出力してみましょう。

音楽を追加する場合

音楽を挿入する場合も流れは同じです、
起動したshotcutへファイルをドロップします。

タイムラインを追加するときは
「右クリックして、オーディオトラック追加」or 「Ctrl + U」です。
(こんどは A1 というのが追加されたと思います、動画では V1 でしたが)
フィルターを追加するときは
「+」ボタンを押した後、 「円盤っぽいマーク」を押してから、
「オーディオ Fade In」などのフィルタを選択します。

あと、タイムラインごと消音するときは
「スピーカーっぽいボタン」を押します。

画面の重ね方の設定

上記のイメージ例にも出ている「ひし形が重なったマーク」が
いつの間にか無くなっちゃっていますね?
もしかしたら自分のshotcutだけなんか設定変えちゃったのかもしれませんが...

とにかく、
左の各タイムライン上で[右クリック] - [プロパティ] を選ぶと
[ブレンドモード] っていうのが選べると思います。
私は「重ねる」くらいしか使ったことないですが、
これを変えると、複数のタイムラインをどう混ぜる(重ねる)かを選べます。
(なくなった「ひし形」マークが、重ねるか否かを選べたんではないかな、たぶん)
映像のすごい人なんかは、これと各フィルター(マスクやらクロマキーやら)を組み合わせて
複数の画像を演出的に合成していくのかもしれませんね。

Shotcut画像、画面の重ね方

編集画面のサイズ変更

[ファイル]-[映像を書き出す] でファイルに出力する際に解像度を指定できますが、
その前に、編集画面から画像サイズを変えたい場合があります。
たとえば368x480の映像2つをもとに、切り取ったり重ねたりして、
854x480(16:9、テレビとかの縦横比)に変えたい場合などは、
[設定]-[映像モード]で変更します。
[標準放送以外]-[854x480 16:9 NTSC]やら [カスタム] やらで変えられます。*4
このとき、プロジェクトはV1やV2ではなく [マスター] を選んでから設定を変えます。

Shotcut画像、編集画面サイズの変更1
Shotcut画像、編集画面サイズの変更2

ちなみに、画面サイズを変えた後の配置は、
[フィルタ] の [サイズと位置]や[切り取る] を使えばできそうです。

このように、映像全体の設定変更は[マスター]から行うことができます。
フィルターが映像全体にかかってしまった、消せない、とかある時は、
何かクリックする場所間違えて、V1 全体や マスター全体に対して設定している場合が有ります(というか、私はやりました...)


そして、今の説明の流れでは
一切「プレイリスト」の話が出てこなかったですが、
「プレイリストボタン」を押すか「View - プレイリスト」で呼び出した後、
プレイリストに、手持ちの動画やらファイルやらを放り込んでおくと、
そこからソースを取り出したり、エクスポートしたりもできます。

先ほどまでの流れで
「ソース」を選んで、
「i やら o やら」で範囲を指定して、
「下のタイムライン」に放り込んでいたのですが、
そのソースを選ぶのが「プレイリスト」から選択すればスムーズですし、
複数ファイルを編集するならプレイリストを使った方が良い気がします。

あとは、
フィルターで「切り取る」と「サイズと位置」を使いました。
複数の動画を一度に表示する場合や、
画像の一部をアップ表示したりすることができます。

最初はうまく表示できないかもしれませんが、

  • フィルタの順番、トラックを重ねる順番を確認する
  • マスターのひし形(1つ or 3つ重なったマーク)「合成」の設定が正しいか「ひし形」無くなった?前述の「ブレンドモード」で設定
  • フィルターがトラックの「マスター」部分(画像各々ではなくマスター全体に対して)にかかっていないか

など、まぁ、
色々みなおしたり、いっそ保存&shotcutを再起動すれば
うまく表示されたりされなかったりします。

うちの環境だと、とくにマウスで何かをドラッグしたタイミングで
強制終了がかかることが多いですが、Shotcutの自動保存機能で復旧できる場合があるので、
わりと親切です。
(まめに上書き保存(Ctrl + s)すればいいだけですし)

ちなみに、編集しているうちに、
なんか急に上手く表示されない、挿入できないとかあると
わたしは上書き保存後に、shotcutを再起動すると、わりと治ります。
マシンパワーの問題とかかもしれませんね。


こんな感じで、わりと素人の私でも、
単に画像を流すだけなら わりと作れちゃうことが分かりました。
フリーウェアで!


*1 といっても、youtubeへのリンクを貼ることができるだけです。
*2 単にAndroid6.0端末を手に入れて、4.2端末ではできなかったことができるようになった、とも言う*3
*3 いや、アプリ公開すると海外から「お前の売れないアプリを俺達が宣伝してやるゼ!」メールが来るんです。広告数に応じたインストール数や費用云々の話はさておき、宣伝動画の作成ってどの程度の難易度なんだろう?という興味はあったので、自作を試みたわけなのです。
*4 カスタムは、正しく設定しないと再生できない場合とかもあるので、慣れるまでは既存設定から試した方が良いかもしれません