スマートフォンや、タブレットでゲームをやって、それを「実況プレイ動画」にする方法が気になったので、
調べて、導入してみました。


完成した動画については、「完成編」の記事をごらんください。



(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)・∀・(V)



まず、私の携帯はiPhone 6Sなのですが、現在、無料ないしは格安で、安全に画面を録画する方法は無いようですね。
以前、「Shou」というアプリがそれを可能にしていたようですが、Apple storeから止められて、
既にDL・インストールしてあっても使えなくなるくらい対策が取られているみたいですよ。
確かに、画面をキャプチャできるっていうのは、それだけでリスキーなことですからね。


そこで、プログラマの人が、Androidなら「Android SDK」を導入するだけで、(音は録れないけど)動画に撮って保存するのは可能っぽい
と教えてくれたので、早速導入しました。
この記事では主に、その方法について書き記しておこうと思います。
尚、この記事に書いてあることは、「screenrecord」でググればわかるようなことで、
画像つきのわかりやすいサイトも色々あります。
<参考サイト>
【screenrecord】Android4.4のゲームプレイ動画録画用機能を利用する準備を整える
【Nexus5root】root化作業に必要な「Android SDK」をPCに導入する

私は、やってみて「ここは注意が必要だな」と思ったことを手順と一緒にメモっていきますね。



私のタブレットはYogaタブレットで、Androidのバージョンは4.4.2のようです。
このバージョン以降なら、私のとった方法で同じことが出来るのでは? と思います。(思うだけ)


まず、必要なものは
・Java SE Development Kit 7(2のAndroid SDKを動かすのに必要)
・Android SDK(PCに接続されたAndroid端末に対して特殊な操作ができる)
・screenrecordex(録画時間を長くするバイナリデータ)
・コマンドプロンプトをいじる程度の知識(録画開始・停止・ファイル移動などを行うのに使う)

です。


1,Java SE Development Kit 7導入
 1-1:サイトへ行く

 1-2:自分のPCにあったJava SE Development KitをDLする

   私の場合はWindow8.1(64bit)なので、「Accept License Agreement」のラジオボタンをONにしてから
   Windows x64 140.06 MB jdk-7u79-windows-x64.exeの青文字部分のリンクをクリックということになる

 1-3:インストールする
   exe形式なので起動して「>Next」をクリックしていれば終わる

2,Android SDK導入
 2-1:サイトへ行く

 2-2:ページ下部のほうに「Other Download Options」という部分があるので、「SDK Tools Only」の項目の中から
   自分のPCに合ったバージョンをDLする
   私の場合はWindows用のinstaller_r24.4.1-windows.exe

 2-3:Cドライブ直下にインストールする 注意ポイント1
   インストール時の、インストール先フォルダを訊かれる窓で、「C:\android-sdk」を指定するのだ。

 2-4:Android SDK Managerを起動
   インストールが終わった時に、すぐ起動するか訊かれるのでそこで起動を選択するか、
   自分でスタートメニューから起動。
   必須なのは「Tools」を展開して「Android SDK Tools」「Android SDK Platform-tools」と
   「Extras」一覧の中の「Google USB Driver」の計3つの模様。
   これらだけチェックONで、右下のインストールボタンを押す。
   
SDKこの画像は、「インストールが済んでいる」状態でスクリーンショットを撮ったため、
赤で囲った右下のインストールボタンが押せない状態になっているが
インストールされていない状態で上記3つの項目のチェックボックスをONにすると、
該当部分は「install 3 packages」となっていて押せるはず。












 2-5:環境変数のPATHに「;C:\android-sdk\platform-tools」を追加する
kankyoukankyou2













   「マイコンピュータ」を右クリックして、「プロパティ」から「システムの詳細設定」へ。
   「詳細設定」タブ一番下の「環境変数」ボタンから環境変数窓を開いて、
   「システムの環境変数」の中の「Path」の項目を選択して「編集」。
   「変数値」の欄に、「;C:\android-sdk\platform-tools」を追加 する。 注意ポイント2
   まるごと書き換えちゃダメよ。
   ここで、一旦PC再起動。

Android SDKが無事導入されたかどうかは、コマンドプロンプトを開いて、「adb」と打ち込んで何か文字列がずらーっと出てきたら成功と考えていい。
「adbとか知らん」みたいなこと言われたらどこか失敗しているので、最初に戻ってやりなおそうw
例えば、「Cドライブ直下にAndroid SDK」をインストールしていないのに、Pathで「;C:\android-sdk\platform-tools」を指定しても
そこには何もないぞってなっちゃうので、もしインストール先を別の場所にしたなら、それ相応のPathを追加しなければいけない。
さもなくば、Cドライブ直下にAndroid SDKをインストールし直すかどちらかだ。



コマンドプロンプトに「adb」と打ち込んで何か文字がずらずら出てきて、成功っぽかったら、
Android画面を録画する準備はもう整ったことになるのだけど、このままだと、3分までしか録画できないという制約がある。

そこで、この制約をとりあえず60分に変更するため以下のとおり「screenrecordex」を導入する。
3分まで撮れればいいという場合は、「screenrecordex」導入はすっ飛ばして「4,録画する」の項目へ。


3,screenrecordex導入
 3-1:サイトへ行く

 3-2:Cドライブ直下にDLする 注意ポイント3

 3-3:Android端末のファイルフォルダの最上層に「data」というフォルダを作る

 3-4:dataフォルダの中に「local」というフォルダを作る

 3-5:localフォルダの中に「tmp」というフォルダを作る

 3-6:DLしてきたscreenrecordexバイナリデータを「tmp」フォルダに入れる。
   手順3-3〜3-6は、PCとAndroid端末をUSBで接続してある状態で、PCのファイルエクスプローラからおこなってもいいし、
   コマンドプロンプトで「$ adb push screenrecordex /data/local/tmp」と打ち込むと、Cドライブ直下においた
   screenrecordexバイナリデータが、Android端末の該当フォルダに投げ込まれるはず…なのだが、
   私はここがうまく行かなかったので、結局ファイルを選択してコピペしたw

 3-7:パーミッションを設定する
   コマンドプロンプトで「$ adb shell chmod 755 /data/local/tmp/screenrecordex」と打ち込む

コマンドプロンプトが「そんなファイル知らん」とか「そんなコマンド受け付けねえ」とか言わないかぎりは成功。
3-7の手順を踏んでいない場合は、4-4なんかのコマンドを入力したときに、「Permission denied」とか出る。


4,録画する
screenrecordexを導入していない場合は、3分上限だが、以下のサイトを見るとわかりやすい。
<参考サイト>
【screenrecord】非rootでもゲーム動画の録画ができる「screenrecord」を使いこなす

では、以下「screenrecordex」で3分以上の動画を撮る場合のコマンドについて。

 4-1:Android端末をPCにUSB接続する
   全手順通して、PCとUSB接続した状態で行う前提。
   つまり、PCに接続していない、野外などではこの方法で画面キャプチャできない。
   まぁ、わざわざ外出先で画面キャプチャをするというシチュエーションがあるかはわからん。
   Android SDK入れたノーパソを一緒に持ち歩いたりすればできるけど。

 4-2:AndroidをSDKでいじれるようにする
   設定項目の中に「USBデバッグを有効にする」的なものがあるので、これをONにする
   タブレットの場合は、PCにUSB接続した状態でSDKを導入したら、勝手に「USBデバッグ」の項目が
   タブレット画面で表示されてチェックONにしたけれど、自分でこの項目にたどり着くには、
   端末情報の「ビルド番号」を連打すると「デベロッパーになりました!」ってなって、
   「開発者向けオプション」という項目が追加される。
   「USBデバッグを有効にする」はその中にあるので、「開発者向けオプション」が設定項目一覧にない場合は、
   ビルド番号を連打するのだ。

 4-3:録画したデータを保存したいPC内の階層を指示する
   例えばタブレットからPCデスクトップに、撮り終わった動画を移動したい場合予めコマンドプロンプトで
   「cd C:\Users\(ユーザー名)\Desktop」と入力してエンターしておく。

 4-4:録画データを保存するAndroid端末側のフォルダを作る
   ここでは一例として、「Download」フォルダを利用することとする。

 4-4:録画スタートする
   コマンドプロンプトで
   「adb shell /data/local/tmp/screenrecordex /sdcard/Download/movie1.mp4」
   と入力してエンターすると録画開始。
   これの意味は「data」フォルダの中の「local」フォルダの中の「tmp」フォルダの中にある「screenrecordex」を使って、
   データフォルダ(SDカード)の「Download」フォルダに、「movie1.mp4」っていう名前で録画データ保存して
   という指示なので、「screenrecordex」を別の場所に入れたならその階層を指示しなきゃいけないし、
   保存したいフォルダがデータフォルダ(SDカード)の「Download」フォルダではないなら、適宜書き換えてくれ! ファイル名もな!
   adb shell /data/local/tmp/screenrecordex --bit-rate 2000000 /sdcard/Download/movie1.mp4
   とかやると、映像ビットレートも指定できる。(このコマンドなら2Mbpsで録画される)
   フレームレートも指定したほうがいいかもしれない。
   指定がないと、なんか32.996fpsみたいな謎フレームレートの動画になるのでw

 4-5:録画を停止する
    コマンドプロンプトでCtrl+Cをすると、画面に「^C」と追記され、録画がストップされる。
    そして、指定したフォルダに、指定した名前の動画が出現している。
    上の例の場合は「Download」フォルダに「movie1.mp4」があるはず。

 4-6:データをPCに移動する
    エクスプローラを使って直接データ領域から持って来ちゃってもいいけど、
    コマンドプロンプトで
    「adb pull /sdcard/Download/movie1.mp4」
    とやると、移動してくれる。
    SDカード内の「Download」フォルダにある「movie1.mp4」というファイルを、手順4-3で指定したフォルダに出してよ! という指示。




さて、これでAndroid端末の画面上で行われていることを、そのままキャプチャしてデータ化する、というのはできるわけなんだが、
なんとこの方法、無音動画しか作れないのである。

そこで、私は、2つの方法を試した。

まずひとつは、タブレットのイヤホン接続部分(音声出力端子)に、オス・オスのステレオミニプラグを挿して、
それをオーディオIF UA-4FXのMIC入力(XLRではなく)に吐き出すという方法。

これだと、ラインで録れるので綺麗なのでは? と思いきや……ノイズがすごい!!
しかも、原因を特定してみたら、USBでPCと接続されているとノイズが入るという結論に至った。
USBでAndroid端末とPCを接続していなければ、そもそも動画の録画が出来ないシステムなのだから、
このノイズを除去する方法は、現段階では皆無ということになる。
せっかくラインで音を出力してもザーザー言う。

もうひとつは、タブレットのフラットスピーカーから出る音をコンデンサマイクから集音して、
実況音声と一緒に録るというものだ。
実況音声を乗せない場合は、マイクから集音して環境音と一緒にゲーム音を録って映像と合成してもイマイチだと思うが、
どうせ声をつけるならこの手順がいい。
ゲームの音をどちらの方法で録るにせよ、映像と別で録るしかなく、あとでAVIUTLで頭合わせしてエンコードしなければいけないんだし。

例えば、ラインで出力した音声にノイズが乗らないのであれば、ゲーム音声をラインで出力しつつ、
実況音声はマイクで録って、映像+ゲーム音声+実況音声という3つのデータの同期をとって
最後に合成するのが一番綺麗に仕上がるわけだが、ラインで出力したゲーム音声のノイズが割と本気でひどいのと、
ゲーム音声を録るデバイスとソフト、実況音声を録るデバイスとソフト、という感じで、環境構築も面倒だ。
3つのデータの頭を合わせるのも、2つのデータの頭を合わせるのも手間はそんなに変わらないが、
ゲームの音声と実況の音声を別々に録るためには、デバイスとソフトを2つずつ用意しなければいけない、ということ。
うちにはその準備があるが、その環境を持っていても、ライン出力したゲーム音声のノイズが汚くて、
そこまでする価値を見いだせなかったという感じ。
なので、タブレットのフラットスピーカーから出る音声と実況音声を同時にマイクで集音するのが最善策かな、と。

そして、出来上がった動画2つは、すでにニコニコにアップしてあるので、
詳細は「完成編」の記事をお読み頂きたーい!