メインコンテンツへスキップ

読む必要のない実験

    ffms2 64bit に関して

    (インタレ解除とは関係がないので、読まなくてもいいです)
    (L-SMASH Works推奨なので、本当に読まなくてもいいです)

     AviSynth+ は、ffms2 の 32 bit のみでも動作しますが、32/64 bit の両方を同時に使用できるようです(誤解を招く書き方かも)。
     逆に、ffms2 64 bit のみだと、この記事のスクリプトでは動きません。
      (ffms2 64 bit のみでも動作するスクリプトは下記)
      *(何故 32 bit と 64 bit が混在していて動くかは、よく分からないのですけど、内部の互換性やらやらのお陰で動いているみたいです。感謝満載です)

    以下は謎の実験です。
     目的:64bit版だけでは動かせないのか見る
     環境:ffms2 32 bit → バージョン2.40.0.0 → Plugins+
        ffms2 64 bit → バージョン5.0.0.0 → Plugins64, Plugins64+ 
        バージョン違いを混在した。
     考察:ffms2は、32bitと64bitが両方ある場合、VideoとAudioをそれぞれ別に投げている様子。64 bit に Vedeo を優先してはいるのかも。
        バージョン違いの 32bit/64bit でも問題なく動作している(と思う)。
        むしろ、64 bit だけだとVideoかAudioの片方しか処理できない様子。32 bit だけだと両方を処理できている。
        これが、ffms2本来の挙動なのか、AviSymth+関係の挙動なのか、AviUtl(32bit)影響なのかはわかりません。
        ChatGPT君は、最初「普通、32bitなら32bit、64bitなら64bitだけをつかうから、両方使うなんてありえないわ」と言っていましたが、最終的には「ま、まぁ、ありえなくも⋯⋯ないわね⋯⋯」となりました。

    以下は使用したスクリプト

    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul")) 

    ↑キャッシュ残さないバージョン↑
     ※どっちでも良いと思います。
      ↑これだと、64bit ffms2のみで動かせます。
        だから何だって気もします。
    ↓ キャッシュ残すバージョン ↓

    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X)) 

    ※※以下の画像の注釈米米
     2.40.0.0 → ffms2 32bit
     5.0.0.0 → ffms2 64bit

    Plugins+  あり
    Plugins64   あり
    Plugins64+ あり

    画像
    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false) )読み込み可
    画像
    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul"))読み込可k

    Plugins+  なし
    Plugins64   あり
    Plugins64+ あり
    64bitのみ

    画像
    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false) ) 読み込み不可

    別のスクリプトの場合

    A = FFAudioSource(X)
    V = FFVideoSource(X)
    AudioDub(V, A)
    画像
    1番目のFFAudioSourceが見つからない。
    V = FFVideoSource(X)
    A = FFAudioSource(X)
    AudioDub(V, A)
    画像
    1番目のFFVideoSourceが見つからない。
    画像
    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul"))読み込み可

    Plugins+  あり
    Plugins64   なし
    Plugins64+ あり

    画像
    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false) )読み込み可
    画像
    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul"))読み込み可

    Plugins+  あり
    Plugins64  あり
    Plugins64+ なし

    画像
    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false) ) 読み込み可
    画像
    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul")) 読み込み可

    Plugins+  あり
    Plugins64  なし
    Plugins64+ なし
    32bitのみ

    画像
    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false) ) 読み込み可
    画像
    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul")) 読み込み可

    Plugins+  あり
    Plugins64  あり
    Plugins64+ あり

    画像
    AudioDub( FFAudioSource(X, cache=false), FFVideoSource(X, cache=false) ) 読み込み可 - VideoとAudioを逆にしただけ。Vが後だから5.0.0.0になると思ったら、2.40.0.0のままだった。

    下の64bitのみの実験が分かりやすいかも。

    画像
            上の場合                              下の場合
    Audioをffms2x64に投げる。             Videoをffms2x64に投げる。
               ↓                                    ↓
    続けて、Videoをffms2x32に             続けて、Audioをffms2x32に
    投げたいが見つからない。               投げたいが見つからない。
               ↓                                    ↓
    仕方がないので、ffms2x64に投げる。     仕方がないので、ffms2x64に投げる。
               ↓                                    ↓
    Audioが押し出されて、なくなる。        Videoが押し出されて、なくなる

    ということかもしれない。

    avs2yuv64.exeを使い、強制的に64bitのみを使う。
     ・64bitのフィルタのみを使用する。
     ・ffms2は、32/64両方ある環境

    AudioDub(FFVideoSource(X, cache=false), LWLibavAudioSource(X, cachefile="nul")) 

    ・上のスクリプト(音声はffms2を使わない)だと動作(映像/音声問題なし)する。
    ・下のスクリプトだと動作しない。

    AudioDub( FFVideoSource(X, cache=false), FFAudioSource(X, cache=false))

    64 bit だけだとひとつのソースしか扱えないようです。
    別の環境だと問題はないのかもしれません。
    バージョン違いを混在した運用で不具合があるかは不明です。
    不安なら、2.40.0.0に統一してください。

    ただの、おま環かもしれない。
    AviSynth の派生である AviSynth+ や Neo を使っているのだから、難しいね。
    混ざっていても動く、どうでもいいことなのかもしれない。
    寝よう。
    そして、忘れよう。

    あなたへのおすすめ