ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

  • 【FFmpeg】NVENC (H.265/HEVC)を使って60fps(CFR)でゲームを録画したい【脱Shadow Play】

    2017-08-27 05:21

    Nvdiaが提供するShadow Play(Share)は低負荷、低容量の録画ソフトとして高く評価されているようですが、
    ・プライマリモニタしか録画できない
    ・指定ウィンドウのみを録画できない
    ・CFRで録画できない
    ・その他詳細な設定ができない
    などなど個人的には使いにくいと感じています。

    Shadow PlayではNVENC H.264を使ってエンコードしているようですが、せっかくNVENC H.265/HEVCが使える環境(GTX 960)にあるのでそれで録画できるソフトがないかと探してみたら、有名なものではBandicamくらいしかないっぽい・・・かといって有料版を買う気にもなれない。

    悩んでいたところFFmpegでもNVENCを使えることを思い出していろいろ試してみました。
    その結果、なんとか実用的なものになったのでメモしておきます。

    ◆必要なもの
    ・Windows 8 / Windows 10 (Windows 7ではAeroを無効化しないとfpsが半減)
    ・NVENC (H.265/HEVC)に対応したNvdiaグラフィックボード (GTX900シリーズ以降)
    (NVENC H.264を使う場合はGTX600シリーズ以降)

    ・最新のNvdiaグラフィックボードドライバ
    FFmpeg
    ・キャプチャーソフト (FFmpegからDirectShowデバイスとして取り込めるもの)
    ・ステレオミキサー (〃)
    FFmpegRec (自作バッチファイル)

    FFmpegはコマンドラインから起動するものですが、毎回手打ちというのも面倒なのでFFmpegRecなるバッチファイルを作成しました。(自分用につくったのでかなり雑な仕様になっています。)
    その使用方法を書く前に、キャプチャーソフト/ステレオミキサーの準備から書いておきます。

    キャプチャーソフトはあらゆるものを試したのですが、
    自分の環境では、60fpsで録画するという条件では、AmaRecTV4のデスクトップキャプチャーモード経由の【AmaRec Video Capture】くらいしかまともに使えませんでした。
    (60fpsでキャプチャーしても実際は30fpsだったり、重複フレームが大量にあったり)
    (AmaRecTV4からはWindows 8から追加されたDesktop Duplication APIを使用しているため60fpsキャプチャが可能 参考1 参考2)

    ステレオミキサーは標準で入っているもので構いませんが、自分の環境ではノイズが入ることがあったので【virtual-audio-capturer】というオープンソースのものを使うことにしました。また設定が必要ですが、「アマミキ!」経由で【AmaRec Audio Capture】を使ってもよいかもしれません。
    (AmaRecTV4経由のAmaRec Audio Captureでは何故かフリーズが多発したためアマミキ!経由にしています。)

    ◇AmaRec Video Captureの準備
    詳しい解説はオンラインヘルプページをご覧ください。

    アマレコTV公式ホームページから「アマレコTV4 Live」をダウンロードして適当な場所に解凍し、AmaRecTV4を起動。


    最初のメッセージはShiftを押しながらOKを押すと次回起動時から表示されなくなります。


    次のメッセージはOKで進み、「ヘルプ」をクリックすることで次回起動時から表示されなくなります。




    一度AmaRecTV4を終了させます。

    ライブ機能を使うために、アマレコTV公式ホームページから今度は「アマレコTV Live アマミキ! Ver3.10」をダウンロードして解凍し、中身の「live_setup300.exe」を実行します。



    AmaRecTV 3.10は今回は使わないためインストールが終了したら削除しても構いません。
    (アマミキ!を使用する方は残しておいてください。)

    再びAmaRecTV4を起動
    画面右クリック→設定→グラフ 4:ライブを開き、「ライブ機能を使う」にチェックを入れ、フレームレートの目安を60、サンプリングレートを44100に設定します。(今回は音声出力は使いませんがエラー表示を避けるため44100に)



    設定したら「適用」または「OK」

    次にグラフ 1:デバイスを開き、「デスクトップキャプチャーモード」をクリックし、設定




    ここでオーディオキャプチャデバイスは(使わない)に変更しておきます。


    設定したら「適用」または「OK」
    設定を閉じると青い枠が表示されます(表示されない場合は画像の部分をクリック)



    まずは青枠左上のボタン
    左側をクリックしながらマウスを動かすとキャプチャーするウィンドウを選択できます。
    右側はウィンドウのクライアント領域を選択、通常はこちらを使います。



    青枠を右クリックするとメニューが開きます。
    ここでキャプチャーモード(キャプモ)を選択できますが、なるべく「ウィンドウ・キャプチャ」を使うようにします。
    (「ウィンドウ・キャプチャ」でキャプチャできないものだけ他2つを使う)


    60Hzモニターにおいて、フレームレートは次のように設定します。
    「ウィンドウ・キャプチャー」→「Monitor Rate」(60.00でもいいかも?)
    「デスクトップ・キャプチャ」「デスクトップ・ウィンドウ指定」→「60.00」
    (Monitor Rateにすると30fpsになってしまうっぽい?)



    設定できたら右下の「SET」をクリック
    これでアマレコ画面にキャプチャー範囲のプレビューがされているはずです。

    これでビデオデバイスの準備は完了
    録画するときは常にAmaRecTV4を起動しておくように
    今回はアマレコの映像デバイスとしてデスクトップキャプチャーを使っていますが、デバイスをキャプチャーボードに設定してライブ機能で出力してやればゲーム機からの映像も録画できます。


    ◇virtual-audio-capturerの準備

    virtual-audio-capturerはオープンソースの「screen-capture-recorder-to-video-windows-free」に付属する仮想ステレオミキサーです。
    Github

    インストーラ配布ページから最新版をダウンロードして実行します。


    言語は適当に



    インストールが完了したら準備完了

    ◇FFmpegRecの準備と録画

    FFmpegRecをダウンロードし適当な場所に解凍


    FFmpegの最新のWindowsビルドをダウンロード
    AmaRec Video Captureは32bit版FFmpegでしか取り込めないため、
    64bitOSでも32bit版をダウンロードします。

    FFmpegを解凍して、binフォルダの中にある「ffmpeg.exe」をFFmpegRecの「FFmpeg」フォルダにコピー




    ここで「List_Devices_FFmpegRec.bat」を実行(ダブルクリック)してffmpegで使用可能なDirectShowデバイスのリストを表示します。
    ここにAmaRec Video Captureとvirtual-audio-capturerがあるか確認してください。



    続いてconfig.txtをメモ帳などで開いて録画設定をします。
    注意すべき項目だけ記載(その他はわかる人だけ変更してください)
    必須と書かれているもの以外は先頭のセミコロン[;]の有無で無効/有効を切り替えられます。([;]有り無効,[;]無し有効)
    ★は必ず確認すること
    config.txt
    FFMPEG:録画ファイル出力フォルダのパス(先程のFFmpegフォルダにFFmpeg.exeを入れておけば、変更する必要なし)
    OUT_DIR:録画ファイル出力フォルダのパス

    ★VIDEO_DEVICE/AUDIO_DEVICE:DirectShowデバイスのリストに表示されているものを""をつけて指定

    VIDEO_BITRATE:映像ビットレート 20000k~40000kくらいを目安に(1280x720,60fpsの場合)
    画質に最も影響するのでいろいろ試してみること
    AUDIO_BITRATE:音声ビットレート FFmpeg内臓のAACは音質の評判があまりよろしくないのでデフォでは多めの320k(映像と比べれば誤差なので)

    MAX_TIME:最大録画時間 録画停止忘れを防ぐために1,2時間程度に設定して有効化([;]を外す)を推奨

    VIDEO_CODEC:映像コーデック
    指定可能コーデック
    [h264_nvenc]:NVENC (H.264/AVC)
    [hevc_nvenc]:NVENC (H.265/HEVC)
    [h264_qsv]:QSV (H.264/AVC)
    [hevc_qsv]:QSV (H.265/HEVC)
    [libx264]:x264 (H.264/AVC)
    [libx265]:x265 (H.265/HEVC)
    [copy]:非圧縮
    など
    h264_nvencだけはなぜか指定したビットレートよりかなり低いビットレートで録画されてしまう(画質も落ちている)。AVOPTIONSのqmaxを1~2程度下げてみるといいかもしれない。
    libx264,libx265は通常のソフトウェアエンコードなので高負荷 録画には非推奨

    AUDIO_CODEC:音声コーデック
    その他指定可能コーデック
    [aac]:AAC(FFmpeg内臓)
    [libmp3lame]:LAME MP3
    [ac3]:AC3
    *[libfdk_aac]:FDK-AAC
    *[libfaac]:FAAC
    [libopus]:Opus
    [libvorbis]:Ogg Vorbis
    [copy]:非圧縮
    など
    *公式ビルドには含まれていない(ライセンスの問題で配布できない)ため指定するには自前でビルドする必要あり
    選択可能ならlibfdk_aacがベスト

    AR:出力サンプリングレート 既定の再生デバイスのサンプリングレートがvirtual-audio-capturerを通してそのままのサンプリングレートで出力されてしまうので、44100Hzまたは48000Hzで出力するために有効化(編集するときのサンプリングレートに合わせておく)

    きちんと設定出来たら「FFmpegRec_v1.0.bat」を起動して、何かキーを押して録画開始します。
    正常に録画できていれば次のように表示されます。



    録画ファイルをMediaInfoで開いてCFRで出力されているか確認してみましょう。


    HEVCコーデックの映像の再生にはMPC-HCをオススメします。
    オプション→内部フィルタ→ビデオ デコーダからハードウェアアクセラレーションのHEVCにチェックを入れておけば低負荷で再生できるはずです。



    手順は面倒かもしれませんが、CFR,ウィンドウ指定の録画などShadowPlayの弱点をうまくカバーできていると思います。
    ただ、H.265とはいえ高ビットレート帯ではNVENC H.264とあまり差をつけられないようですハードウェアデコードができない場合は再生負荷も大きいのでやはりNVENC H.264にしておくべきかもしれません。(h264_nvencを指定)
    NVENC自体今でも開発が進んでいますし、FFmpeg内臓のNVENCも頻繁に更新されているので今後のオプション充実などに期待ですね。
    その他何か気になることがあればコメントください。

    エラー発生時の対処

    正しい対処でない可能性が高いですが一応

    ◇[Past duration 0.xxxxxx too large]が大量に表示される
    ⇒たまに発生する程度なら録画やり直して発生しないことを祈る
    頻繁に発生するなら;FRAME_DROP_THRESHOLD=-1.1の;を外して値を調整
    (指定しない場合はデフォルトで-1.1)
    少しずつ増やしてみる
    2.0近くまで上げるとdupやdropがみるみる増えていくことがあるので注意

    以下の方法でも回避できるかもしれないが、弊害があるので非推奨。
    ・VSYNC=passthroughに設定(CFRではないファイルができることがある)
    ・FRAMERATE,INP_FRAMERATEを同じ値にして有効化(じわじわと音ズレが訪れるかも)

    [No NVENC capable devices found]が表示されて録画できない
    ⇒グラフィックボードがNVENCに対応していない、またはその一部オプションが対応していない可能性があります。
    確かにNVENCに対応したグラフィックボードを使っているならば、HEVC_NVENC_OPTまたはH264_NVENC_OPTの一部を削ってみてください。
    使えるなら-zerolatency trueは残すように


  • 広告
  • Minecraft 1.8 Minecraft Changer,フォント変更MOD 導入方法メモ

    2015-03-16 10:33

    これはForgeを使用する場合フォント変更MODの導入方法のメモです。

    製品版 Minecraft 1.8 でしか導入できないのでご注意下さい。
    1.8.1~1.8.3ではありません。

    以下のようなメモも参考にどうぞ
    Minecraft 1.8 Forge,OptiFine,日本語入力mod 導入方法メモ
    Minecraft 1.8 影MOD(ShadersMod) 導入方法メモ


    1.Minecraft Changerの配布ページからMinecraft Changerをダウンロードします。
    このMinecraft Changerを使用することで公式ランチャーは不要となります。
    公式ランチャーよりも使いやすい点も多いのでおすすめです。
    もし.NET Framework 4.5がインストールされていなければインストールしておいてください。
    Minecraft Changer



    わかりやすい場所にフォルダを作成してください。今回は「Minecraft Changer」としています。



    その中に先ほどダウンロードしたファイルを解凍し、コピーします。
    この時、同時に「mods」などのフォルダを作っておくとよいでしょう。



    2.Minecraft Changer.exeを起動します。
    (この画像だけバージョンが古いのは気にしないでください。)

    MinecraftアカウントIDパスワードを入力し、
    既にForgeを導入している場合や、公式ランチャーのデータを引き継ぎたい場合は
    公式ランチャーからデータを追加するを選択します。


    3.Forgeまだ導入していない場合 (Forge既に導入している場合は4
    画像の赤枠のように選択して導入します。
    バニラバージョン(今回は1.8)が存在しない場合は右上端のマークをクリックして追加して下さい。
    Forge
    インストーラーのダウンロード方法は以下の過去記事をご覧ください。
    Minecraft 1.8 Forge,OptiFine,日本語入力mod 導入方法メモ






    4.フォント変更MODをダウンロードします
    FontGen
    VLゴシックでも様々なタイプがありますが個人的には
    VLゴシック アンチエイリアス : ClearType 強さ : 100 
    が最も見やすいと感じます。
    それ以外のフォントを使いたい場合はページ上部のFontGenを使用して作成してみてください。



    ダウンロードしたVLゴシック手順1で作成したmodsフォルダに入れます。



    5.使用するMODを選択します
    再びMinecraft Changer画面へ戻り、画像のように進んで選択します。

    基本MOD
    基本MOD
    として追加できるのは公式ランチャーの導入方法でjarの中にclassを入れて上書きするタイプのMODだけです。
    VLゴシックは基本MODに入ります。











    チェックを入れるか入れないかで起動前にオンオフを切り替えることができます。


    拡張MOD
    拡張MOD
    として導入できるのはForgeやLiteLoader(LiteLoaderもインストールしている場合)を前提とするMODだけです。今回はForgeだけとなります。


    ここに表示されるものは
    %AppData%\.minecraft\mods
    の中にあるMODです。追加する場合は↑のフォルダに入れてから選択しましょう。
    こちらも基本MODと同様にオンオフが切り替えられます。


    これで導入完了です。MODを設定したゲームを選択してスタートボタンを押すか、ダブルクリックしてください。




  • Minecraft 1.8 影MOD(ShadersMod) 導入方法メモ

    2015-03-14 00:3225
    これはForgeを使用する場合ShadersModいわゆる影MODの導入方法のメモです。

    追記(3/16):Minecraft Changer,フォント変更MODの導入方法メモを投稿しました。
    Minecraft 1.8 Minecraft Changer,フォント変更MOD 導入方法メモ

    製品版 Minecraft 1.8 でしか導入できないのでご注意下さい。
    1.8.1~1.8.3ではありません。

    このMODを使用するにはMinecraftなどの3Dゲーム快適にプレイできるPCスペックが必要になります。

    1.まずは過去記事の Minecraft 1.8 Forge,OptiFine,日本語入力mod 導入方法メモ
    を参考に ForgeOptiFine を導入して下さい。日本語入力MOD(IntelliInput)は入れても入れなくてもおkです。

    2.ShadersMod本体をダウンロードします。
    ShadersMod
    For Minecraft 1.8の最新版をダウンロードして下さい。





    ダウンロードしたShadersMod-v2.4.**mc1.8.jar過去記事と同じように
    %AppData%\.minecraft\modsに入れます。
    詳しくは過去記事手順4をご覧ください。


    3.シェーダソフトをダウンロードします。
    SEUS
    ページ下の方にあります。

    Standard 軽め
    Ultra 標準
    Ultra DOF 被写体深度
    Ultra Motion Blur モーションブラー

    いろいろありますが、普通はUltraでおkです。
    また、これらはMinecraft内で簡単に切り替えられるので全てダウンロードしてもおkです。



    利用規約を読み、同意のチェックをいれてダウンロード

    4.MinecraftForgeで起動します。
    詳しくは過去記事手順4をご覧ください。

    トップ画面やゲームプレイ中に設定を開きます。
    そこにshaders...というのが追加されているので開きます。



    左下のOpen shaderspacks folderをクリックしてshaderpacksフォルダを開きます。
    ちなみにこのフォルダのパスは %AppData%\.minecraft\shaderpacks です。



    ここに先ほどダウンロードしたシェーダソフト.zipの拡張子のまま(解凍しない)で入れます。



    シェーダソフト
    を入れるとMinecraft側に反映されるので使用するシェーダソフトを選択してDoneをクリックします。(none)にすればデフォルトに戻せます。



    これで導入は完了です。

    少し重いと感じる場合は以下の方法を試してみてください。
    ==========================================
    ・描画距離、最大フレームレートを小さくする
    ==========================================





    描画距離(Render Distance)
    は実際にプレイしながら軽くなるまで少しずつ下げていけばおkです。
    最大フレームレート(Max Framerate)はまず60fpsにしてそれでも重ければ30fpsくらいまで下げてみてください。
    ==========================================
    ・グラフィックスを処理優先にする
    ==========================================







    これでも重い人は以下のページを参考に設定してみてください。
    http://www26.atwiki.jp/minecraft/pages/295.html#id_1691ea1b