次のパソコンを軽くイメージ その 2(2019 年)

この前イメージした次のパソコンを少し修正。

ストレージの考え方を修正。前回は作業用ディスクとして RAM ディスクを用いることを前提にメモリを増やしたが、今回は RAM ディスクを廃して Optane SSD とする方針に変更。

というのも、作業用ディスクに無圧縮 AVI を出力することを想定した場合、フル HD、60 fps だと音声込みで 1 分当たり 21 GB 必要となり、6 分の動画で 126 GBも必要となってしまう。メモリでは賄いきれないため、速度と耐久性を兼ね備えた Optane SSD を選択。

Optane の容量は、以前に調査した C ドライブ必要量 100 GB に加えて、動画出力 126 GB となると、最低でも 250 GB は必要。

Optane は速度の速い 905P シリーズが良いが、低容量は U.2 接続しかないので(U.2 → M.2 変換はそこがボトルネックになると嫌なので避ける)、速度のやや遅い 900P シリーズで妥協する。

また、一応 Blu-ray も付けることとした。

というあたりを、BTO で見積もってみた。さすがに Optane は選べなかったので、別途購入ということにする。

サイコム:Radiant GZ2800Z390 基本部分 144,960 円(送料別)

V-SPEC:第 8/9 世代 ATX スタンダード 基本部分 165,090 円(送料別)


本体

詳細はサイコムベース。
パーツ型番想定価格(税込み)
名称次期メインマシンイメージ その 2(2019 年)
304,960 円
基本部分サイコム Radiant GZ2800Z390
144,960 円
マザーボードASRock Z390 Pro4
- 円
CPUIntel Core i9-9900K- 円
CPU クーラーCoolerMaster Hyper 212EVO
- 円
セラミックグリスCPU 付属品- 円
メモリ16 GB- 円
SSDOptane SSD 900P 480 GB HHHL
80,000 円
SSDSATA 4TB
80,000 円
マウンタSSD 付属品0 円
光学ドライブ
(Blu-ray)
LG BH14NS58
- 円
ビデオカードオンボード
- 円
LANオンボード
- 円
ケースFractal Design CORE 2550S Black- 円
電源SilverStone SST-ET550-B(80PLUS Bronze)
- 円

周辺機器

周辺機器は前回から変更無し。
パーツ型番想定価格(税込み)
RAID ユニットWestern Digital My Book Duo WDBLWE0080JCH-JESN(流用)
※8TB、RAID 1 の運用で実効 4TB
※USB 3.0 接続
0 円
サウンドカードCreative Sound Blaster Digital Music Premium HD (SB-DM-PHD)(流用)
※USB 接続
0 円
スピーカーONKYO WAVIO GX-70HD(流用)
0 円
オーディオレシーバーONKYO WR-BT300(流用)
※Bluetooth で音声を受信してスピーカーに流す
0 円
ディスプレイ21.5 インチワイド液晶、IO DATA LCD-MF223XS(流用)
※HDMI 接続
0 円
ゲームコントローラーLogicool F310r(流用)0 円





C# で extended-length パス

Windows ではパスの長さは MAX_PATH(260)文字までということになっていて、C#(というか .NET Framework)のファイル系ライブラリも昔は 260 文字までのパスしか使えなかった。

260 文字を超えるとても長いパスを扱えるようにするのが extended-length パスで、単純に、通常のパスの先頭に "\\?\" を付与するだけで良い。

使い方


NET462extended-length パスは .NET Framework 4.6.2 でサポートされたので、プロジェクトのプロパティーでターゲットフレームワークを .NET Framework 4.6.2 以上にしたうえで、以下のコードを実行すると、正しく結果が得られる。

const String EXTENDED_LENGTH_PATH_PREFIX = @"\\?\";
String aPath = EXTENDED_LENGTH_PATH_PREFIX + @"C:\Tmp\とても長いパス\123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789A123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890B\1234567890123456789Z\1234567890123456789Y\VeryVeryLongPath";
MessageBox.Show("Len: " + aPath.Length.ToString() + "\nExists: " + Directory.Exists(aPath).ToString());

"\\?\" を付与しないと、フォルダーが存在する場合でも False が返されてしまう。

互換性

ターゲットフレームワークを .NET Framework 4.6.2 とすると動作する環境が限られてしまう。

.NET Framework 4.6.2 未満の環境でも、extended-length パスはサポートされないにしても、短いパスである限りは動くようにしたい場合は、ターゲットフレームワークを例えば .NET Framework 4.5 としたうえで、まず App.config の <runtime> に <AppContextSwitchOverrides> を追加する。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <runtime>
    <AppContextSwitchOverrides value="Switch.System.IO.UseLegacyPathHandling=false;Switch.System.IO.BlockLongPaths=false"/>
  </runtime>
</configuration>

実行時に .NET のバージョンを確認し、4.6.2 以上であれば extended-length パスを使うようにする。
private Boolean GetClrVersionRegistryNumber(out Int32 oClrVersion)
{
    using (RegistryKey aKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32).OpenSubKey(@"SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full\"))
    {
        if (aKey != null && aKey.GetValue("Release") != null)
        {
            oClrVersion = (Int32)aKey.GetValue("Release");
            return true;
        }
        else
        {
            oClrVersion = 0;
            return false;
        }
    }
}

private Boolean Is462()
{
    Int32 aClrVer;
    GetClrVersionRegistryNumber(out aClrVer);
    return aClrVer >= 394802;
}

private String ExtendPath(String oPath)
{
    // extended-length パスが使えない環境や、既に extended-length パスになっている場合はそのまま返る
    if (!Is462() || oPath.StartsWith(EXTENDED_LENGTH_PATH_PREFIX))
    {
        return oPath;
    }

    // extended-length パスにする
    // MAX_PATH 文字以上のフォルダー名をダイアログから取得した場合など、短いファイル名形式になっていることがあるため、
    // Path.GetFullPath() で長いファイル名形式に変換する
    return EXTENDED_LENGTH_PATH_PREFIX + Path.GetFullPath(oPath);
}

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        String aPath = ExtendPath(@"C:\Tmp\短いパス");
        //String aPath = ExtendPath(@"C:\Tmp\とても長いパス\123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789A123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890B\1234567890123456789Z\1234567890123456789Y\VeryVeryLongPath");
        MessageBox.Show("4.6.2 or higher: " + Is462().ToString() + "\nLen: " + aPath.Length.ToString() + "\nExists: " + Directory.Exists(aPath).ToString());
    }
    catch (Exception oExcep)
    {
        MessageBox.Show(oExcep.Message);
    }
}

このようにすると、.NET 4.6.2 以上の環境で動作させると長いパス含めて正しく動作するし、.NET 4.6.2 未満の環境では長いパスは動作しないが短いパスなら動作する。


Intel Optane SSD メモ

インテルの Optane SSD のメモ。

Optane SSD は通常の NAND NVMe SSD と比べて、ベンチマーク上の速度は
  • ランダムリード:6~7 倍高速
  • ランダムライト:1.2~2 倍高速
  • シーケンシャルリード:やや遅い
  • シーケンシャルライト:1.5 倍高速
となっているが、実用上はそんなに変わらないらしい。

耐久性としては TBW が 8.76 PB と、NAND の優に 10 倍以上はある。

ラインナップは 2017 Q4 発売の 900P シリーズと 2018 年 Q2 発売の 905P シリーズ。905P のほうが多少高速かつ省電力。インターフェースはいずれも PCIe NVMe 3.0 x4 だが、フォームファクターはシリーズと容量によって異なる。
  • 905P:960 GB(HHHL / 17 万円)、480 GB(U.2 / 8 万円)
  • 900P:480 GB(HHHL / 8 万円)、280 GB(HHHL or U.2 / 5 万円)
【参考リンク】

C ドライブ容量メモ

DriveC今使っている C ドライブの容量メモ。
  • OS:23 GB
  • アプリ系:37 GB(18 GB + 18 GB + 1 GB)
  • 設定系:32 GB(25 GB + 7 GB)
  • 単独ファイル:7 GB(ページファイル)
ここまでで 99 GB。その他の主な物は、
  • イメージ:239 GB
  • 動画出力:80 GB
  • 単独ファイル:33 GB(ハイバネ、RAM ディスク初期化)
調べてて今更気付いたけど、ハイバネーションは不要なので無効にしておいた。管理者権限のコマンドプロンプトで、
powercfg /h off
とする。

これで hiberfil.sys 13 GB が消えた。

ニコカラメーカーでプレビュー・動画出力ができない場合の対処法

お使いのパソコン環境によっては、ニコカラメーカーのプレビュータブでプレビューができなかったり、動画出力ができないケースが発生する場合があります。

プレビュー・動画出力には DirectX の仕組みを使用しており、詳細は DirectX にお任せしているため、うまく動作しない原因もニコカラメーカー側では分からないのですが、少しでもうまく動く可能性を上げるための方法を以下にまとめました。プレビュー・動画出力がうまく行かない場合にお試し下さい。


ニコカラメーカーのインストール場所

ニコカラメーカーをインストールする際、以下のフォルダーを「避けて」インストールして下さい。
  • C:\Program Files
  • C:\Program Files (x86)
これらのフォルダーには Virtual Store と呼ばれる特殊な機能が備わっており、予期せぬ結果となる恐れがあります。

もしこれらのフォルダーにニコカラメーカーがインストールされている場合は、別の場所に再インストールして下さい。

例えば、
  • C:\MyApp
というようなフォルダーを自分で作成し、そのフォルダーの中にニコカラメーカーのフォルダーを入れると良いでしょう。ニコカラメーカーの実行ファイルのフルパスは以下のようになります。
  • C:\MyApp\NicoKaraMaker\NicoKaraMaker.exe

DirectShow フィルターの再インストール

DirectShow フィルター(動画コーデック)を再インストールすることで解決する場合があります。以下を参考にして、K-Lite Codec Pack(Full 版)をインストールしてみて下さい。

DownloadFull
K-Lite Codec Pack ダウンロードページの中程にある「Download Full」をクリックします。

Mirror1Full 版ダウンロードページの上の方にある「Mirror 1」をクリックし、ファイルをダウンロードします。ダウンロードが遅い場合は Mirror 2 からダウンロードしても構いません。

ダウンロードしたファイルは、ファイル名が「K-Lite_Codec_Pack_1460_Full.exe」のようになっているはずです(数字はバージョンによって変わります)。ファイル名が違う場合は広告のファイルをダウンロードしている可能性がありますので再度確認して下さい。

ダウンロードした K-Lite_Codec_Pack_1460_Full.exe をダブルクリックしてインストールを開始します。旧バージョンや他のコーデックのアンインストールが指示された場合はアンインストールして下さい。

Normalインストールモードを「Normal」のままにしておきます。

設定をデフォルトのままにして、次々と「Next」ボタンをクリックします。

Install最後に「Install」ボタンをクリックすると、コーデックがインストールされます。

DirectShow フィルター設定の確認

スタートメニューから「Codec Tweak Tool」を起動します。

Tweak「DirectShow (x86)」ボタンをクリックします。64 bit Windows をお使いの場合でも、(x64) ではなく (x86) をクリックして下さい。
Manage「ENABLED FILTERS」の中に「LAV Video Decoder」と「LAV Splitter」が入っていることを確認します。入っていれば問題ないので、そのまま Close ボタンをクリックしてウィンドウを閉じます。

もしも「DISABLED FILTERS」の中に「LAV Video Decoder」「LAV Splitter」が入っている場合は、「LAV Video Decoder」「LAV Splitter」のチェックを入れてから Apply ボタンをクリックします。すると「LAV Video Decoder」「LAV Splitter」が「ENABLED FILTERS」に移動しますので、Close ボタンをクリックしてウィンドウを閉じます。
Codec Tweak Tool のメインウィンドウに戻ったら、Exit ボタンをクリックして終了します。

元動画を無圧縮 AVI にする

素材となる元動画(ニコカラメーカーの素材タブで指定する動画)の形式が mp4 や圧縮された AVI 形式の場合は、元動画を無圧縮 AVI 形式(RGB24)に変換します。

変換には、市販ソフト・フリーソフト等をご利用下さい。

動画と歌詞以外のファイルが無いことの確認

素材となる元動画と同じフォルダに、ファイル名が同じで拡張子のみが違うファイルがあると、元動画の読み込みに悪影響を及ぼす場合があります。そのようなファイルは削除するか、別の場所に移動して下さい。

例)元動画が Test.avi で歌詞ファイルが Test.lrc の場合、Test.avs が同じフォルダに存在すると NG

管理者権限での起動

ニコカラメーカーを管理者権限で起動します。

Adminエクスプローラーで NicoKaraMaker.exe を右クリックし、「管理者として実行」をクリックすることで、ニコカラメーカーを管理者権限で起動することができます。

ブースターの無効化

プレビュー処理を高速化するブースターを無効にすると、動画が読み込めるようになる場合があります。

ニコカラメーカーのメニューから[ツール→設定]をクリックし、「ブースターを使用する」のチェックを外して OK ボタンをクリックします。その後、プレビュータブを再度開いてください。

特定のエラーメッセージごとの対処法

プレビュー・動画出力時に、以下のようなエラーメッセージが出力される場合は、エラーメッセージごとに対処法がありますので、リンク先の情報に従って対処して下さい。

知見募集中

他の方法でうまく動くようになった場合は、情報をコメントでお寄せ下さい。お待ちしております。



カウンター


カンパのお願い
Amazon でお買い物の際は、下記で検索して頂けたら幸いです。
記事検索
最新コメント
  • ライブドアブログ